Java 位运算符 - Java 编程入门

Java 位运算符直接对整型的二进制进行位操作。 位与运算符为 &,其运算规则是:参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位同时为 1,那么计算结果为 1,否则为 0。因此,任何数与 0 进行按位与运算,其结果都为 0。如下: int x = 5, y = 12; int z = x & y; 运算过程如下: 位或运算符为 |,其运算规则是:参与运算的数字,低位对齐,高位不足的补零。如果对应的二进制位只要有一个为 1,那么结果就为 1。如果对应的二进制位都为 0,结果才为 0。 11 | 7 的运算过程如下: 位异或运算符为 ^,其运算规则是:参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1。 11 ^ 7 的运算过程如下: 位取反运算符为 ~,其运算规则是:只对一个操作数进行运算,将操作数二进制中的 1 改为 0,0 改为 1。如下: int i = 10; System.out.printf("%d \n",~i); //输出 -11 运算过程如下: 因为取反之后的结果是十六进制数,而在上面的程序中使用 %d 将输出转换为了十进制数,所以输出的结果是 -11,而不是 65525。可以使用如下语句查看十六进制结果。 int i=10; System.out.printf("%x \n",~i); //输出 fff5 可以看到输出结果为 fff5,将它转换为二进制是 1111111111110101。这个二进制数的最高位为 1,表示这个数为负数。除最高位外,按位取反再加 1,即得到二进制原码 1000000000001011,用十进制数表示即为 -11。 左移位运算符为 «,其运算规则是:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 11 << 1; 将整数 11 向左位移 1 位的过程如下: 从图中可以看到,原来数的所有二进制位都向左移动 1 位。原来位于左边的最高位 0 被移出舍弃,再向尾部追加 0 补位。最终到的结果是 22,相当于原来数的 2 倍。 右位移运算符为 »,其运算规则是:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。 11 >> 1 将整数 11 向右位移 1 位的过程下: 从图中可以看到,原来数的所有二进制位都向右移动 1 位。原来位于右边的最低位 1 被移出舍弃,再向最高位追加 0 补位。最终到的结果是 5,相当于原数整除 2 的结果。
Loading...


Run