Java 中的按位运算符2025年3月21日 | 阅读 5 分钟 在 Java 中,位运算符用于执行二进制数字的位级操作。这些运算符通过执行位移、AND、OR、NOT 和 XOR 等操作来修改数字的位。我们将通过示例和程序介绍 Java 中可用的各种位运算符。 Java 位运算符1. AND (&)AND 运算符以位方式组合两个整数。如果两个操作数中对应的位都设置为 1,则它会返回一个新数字,其中每位都设置为 1。否则,该位设置为 0。 在此示例中,a 的二进制值为 0011,而 b 的二进制值为 0110。通过对这两个值进行位 AND 操作,得到二进制值 0010,相当于十进制的 2。 2. OR (|)OR 运算符对两个数字执行按位 OR 操作。如果两个操作数中任何一个的对应位设置为 1,则它会返回一个新数字,其中每位都设置为 1。如果不是,则该位设置为 0。 在此示例中,a 的二进制值为 0011,而 b 的二进制值为 0110。对这两个值执行按位 OR 操作会得到二进制值 0111,相当于十进制的 7。 3. XOR (^)XOR 运算符对两个数字执行按位异或操作。如果两个操作数中只有一个的对应位设置为 1,则它会返回一个新整数,其中每位都设置为 1。否则,该位设置为 0。 在此示例中,a 的二进制值为 0011,而 b 的二进制值为 0110。对这两个值执行按位 XOR 操作会得到二进制值 0101,相当于十进制的 5。 4. NOT 运算符 (~)NOT 运算符对单个整数执行按位 NOT 操作。它会生成一个每位都反转的新数字。每个 0 都被替换为 1,每个 1 都被替换为 0。 对该数字执行 NOT 运算符操作会得到二进制值 11111111111111111111111111111100,相当于十进制的 -4。Java 对有符号数使用二进制补码编码,数字的符号由最左边的位表示。此示例中最左边的位是 1,表示负值。 5. 左移 (<<)左移运算符将数字的位向左移动指定的位数。0 填充右侧的空位。此过程会将数字乘以 2 的指定位置数的幂。 6. 右移 (>>)右移运算符将整数的位向右移动指定的位数。左侧的空位由符号位填充(正数填 0,负数填 1)。此操作会将整数除以 2 的指定槽数的幂。 在此示例中,a 的二进制值为 11111111111111111111111111111000。将 a 右移两位会得到二进制值 11111111111111111111111111111110,相当于十进制的 -2。 7. 无符号右移运算符 (>>>)它将整数的位向右移动多位。0 填充左侧的空位。此过程会将整数除以 2 的指定槽数的幂,并丢弃任何余数。 BitwiseOperatorsDemo.java 输出 a & b = 2 a | b = 7 a ^ b = 5 ~a = -4 a << 2 = 12 h >>> 2 = 1073741822 解释 在此程序中,我们声明了多个整数变量并执行了位运算。按位 AND、OR 和 XOR 操作分别由 &、| 和 ^ 运算符执行。~ 运算符执行按位 NOT 操作。<< 运算符执行左移操作,>>> 运算符执行无符号右移操作。 我们使用 System.out.println() 函数打印这些操作的结果。如您所见,每个操作的结果都与预期结果一致。 结论总之,位运算符对于 Java 和其他编程语言的编程至关重要。它们使得对整数和其他原始数据类型执行位运算变得简单快捷。 |
给定两个数字。第一个数字是整数 n,第二个数字是非负数,小于或等于 n,表示为 k。任务是找出所有错排的总数...
阅读 6 分钟
复合赋值运算符是将多个运算符组合在一起。它包括一个赋值运算符和一个算术运算符或按位运算符。在右操作数和左操作数之间执行指定的运算,并将结果赋给左操作数……
7 分钟阅读
ProcessBuilder 类用于在 Java 中创建操作系统进程。ProcessBuilder 类的每个实例都负责管理进程属性的集合。ProcessBuilder 类不能同步。在 JDK 5.0 之前,使用的是 Runtime.exec() 方法来...
7 分钟阅读
? 在 Java 中,您可以使用 java.time.LocalDate 类来分析和操作日期。要接受日期格式,可以使用 java.time.format.DateTimeFormatter 和异常处理的组合。以下是一些示例:DateParser.java import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; public class DateParser { public static LocalDate parseDate(String inputDate)...
阅读 8 分钟
正确嵌套括号是在计算机科学中,尤其是在数学方程、解释器和编译器中,一个常见的问题。如果保持适当的开闭括号序列,“正确嵌套”的括号集才算正确。问题陈述给定一个仅包含字符 ( 和...的字符串
7 分钟阅读
通常,我们需要生成一个安全密码以用于安全目的。有几种方法可以生成强密码。在本节中,我们将理解如何生成一个至少包含两个小写字符、两个大写字符、两个数字的强密码...
阅读 8 分钟
在不断发展的技术格局中,自然语言处理 (NLP) 在弥合人类交流与计算机理解之间的差距方面发挥着至关重要的作用。Java 是一种通用且广泛使用的编程语言,它使开发人员能够通过各种库和框架来利用 NLP 的潜力……
阅读 3 分钟
java.time.format.DecimalStyle 类具有 getNegativeSign() 方法。对于此 DecimalStyle 的 Locale,使用 Java 的 DecimalStyle 类获取表示负号的字符。当该区域性具有负号时,此方法返回该字符。语法:public char getNegativeSign() 参数:不接受任何参数...
阅读 2 分钟
Java 中 List 和 Set 的区别 在 JDK 2.0 中,我们使用 Vectors、Arrays 和 Hashtable 将对象分组到单个单元中。在 JDK 8 中,Collection 框架出现,它提供了多个接口来处理数据集合。List...
5 分钟阅读
? Java 中的静态代码块是独特的代码段,它们仅在类初始化期间运行一次。它们通常用于执行一次性设置操作,例如初始化静态变量或任何其他必要的设置。静态块会自动由...执行
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India