📜  Java |运营商|问题4(1)

📅  最后修改于: 2023-12-03 15:15:58.503000             🧑  作者: Mango

Java 运营商问题4

在Java中,我们通常使用运算符来执行数学或逻辑运算。这些运算符包括算术运算符、比较运算符、逻辑运算符等等。其中,运算符会根据它们使用的操作数的数量进行分类,比如单目运算符、双目运算符和三目运算符。

在进行运算时,Java中的运行商都有一个优先级,也就是运算符的执行顺序。如果一个表达式中包含多个运算符,那么Java会按照运算符的优先级来决定它们的执行顺序。在某些情况下,我们可能需要改变运算符的执行顺序,这时就需要使用括号来改变运算的优先级。

而在本次介绍中,我想要探讨的是Java中的位运算符问题。位运算符是用来执行按位运算的运算符,在位运算中,每个数都以二进制表示,而位运算符作用于每个二进制位,方便我们对二进制数进行位运算操作。

Java中的位运算符

Java中的位运算符包括:

  • 按位与(&)
  • 按位或(|)
  • 按位异或(^)
  • 取反(~)
  • 左移(<<)
  • 右移(>>)
  • 无符号右移(>>>)

下面分别介绍每一种运算符的具体用法。

按位与(&)

按位与运算符(&)是将两个操作数进行按位与运算,将运算结果存储在新的整型变量中。按位与的规则是将两个数转换成二进制数后,按位进行与运算,相同位上的数都为1才为1,否则为0。

例如:

int a = 0b1010;
int b = 0b1100;
int c = a & b;
System.out.println(Integer.toBinaryString(c));

输出结果为:1000,即10 & 12 = 8。

按位或(|)

按位或运算符(|)是将两个操作数进行按位或运算,将运算结果存储在新的整型变量中。按位或的规则是将两个数转换成二进制数后,按位进行或运算,相同位上的数有一个为1就为1,否则为0。

例如:

int a = 0b1010;
int b = 0b1100;
int c = a | b;
System.out.println(Integer.toBinaryString(c));

输出结果为:1110,即10 | 12 = 14。

按位异或(^)

按位异或运算符(^)是将两个操作数进行按位异或运算,将运算结果存储在新的整型变量中。按位异或的规则是将两个数转换成二进制数后,按位进行异或运算,相同位上的数相同为0,不同为1。

例如:

int a = 0b1010;
int b = 0b1100;
int c = a ^ b;
System.out.println(Integer.toBinaryString(c));

输出结果为:1110,即10 ^ 12 = 6。

取反(~)

取反运算符(~)是将操作数进行按位取反运算,将运算结果存储在新的整型变量中。取反的规则是将二进制数中的每一位0变为1,1变为0。

例如:

int a = 0b1010;
int b = ~a;
System.out.println(Integer.toBinaryString(b));

输出结果为:-1011,即~10 = -11。

左移(<<)

左移运算符(<<)是将一个操作数左移指定的位数,将运算结果存储在新的整型变量中。左移的规则是将二进制数向左移动一定的位数,高位丢弃,低位补零。

例如:

int a = 0b1010;
int b = a << 2;
System.out.println(Integer.toBinaryString(b));

输出结果为:101000,即10 << 2 = 40。

右移(>>)

右移运算符(>>)是将一个操作数右移指定的位数,将运算结果存储在新的整型变量中。右移的规则是将二进制数向右移动一定的位数,低位丢弃,高位补符号位。

例如:

int a = 0b10101;
int b = a >> 2;
System.out.println(Integer.toBinaryString(b));

输出结果为:101,即21 >> 2 = 5。

无符号右移(>>>)

无符号右移运算符(>>>)是将一个操作数无符号右移指定的位数,将运算结果存储在新的整型变量中。无符号右移的规则是将二进制数向右移动一定的位数,低位丢弃,高位补零。

例如:

int a = 0b10101;
int b = a >>> 2;
System.out.println(Integer.toBinaryString(b));

输出结果为:101,即21 >>> 2 = 5。

总结

本次介绍了Java中的位运算符,在实际开发中,我们可以根据需要使用不同的位运算符来进行位运算操作。当需要改变运算符的执行顺序时,我们可以使用括号来改变运算的优先级。需要注意的是,位运算符只能作用于整型数据,不能直接用于浮点型数据。