Java运算符 与(&)、非(~)、或(|)、异或(^)、移位运算

1.位异或运算(^)

运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。

比如:5^9=12.
Java运算符 与(&)、非(~)、或(|)、异或(^)、移位运算_第1张图片

2.位与运算符(&)

运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。

比如:5&9=1.
Java运算符 与(&)、非(~)、或(|)、异或(^)、移位运算_第2张图片

3.位或运算符(|)

运算规则:两个数都转为二进制,然后从高位开始比较,两个数只要有一个为1则为1,否则就为0。

比如:5|9=13.
Java运算符 与(&)、非(~)、或(|)、异或(^)、移位运算_第3张图片

4.位非运算符(~)

运算规则:如果位为0,结果是1,如果位为1,结果是0.

比如:~9

在Java中,所有数据的表示方法都是以补码的形式表示,如果没有特殊说明,Java中的数据类型默认是int,int数据类型的长度是8位,一位是四个字节,就是32字节,32bit.

这里我们为了方便使用(byte)9,一个字节只有8位
9的二进制为: 00001001

取反为: 11110110

因为高位是1,所以原码为负数,负数的补码是其绝对值的原码取反,末尾再加1。

因此,我们可将这个二进制数的补码进行还原:
首先,末尾减1得反码:11110101
将各位取反得原码:00001010
所以~9 = -10
Java运算符 与(&)、非(~)、或(|)、异或(^)、移位运算_第4张图片.

5.移位(>> <<)

“>>”:向右移位
“<<”:向左移位
9>>2=2
Java运算符 与(&)、非(~)、或(|)、异或(^)、移位运算_第5张图片

6.无符号移位(>>> <<<)

都是正数时无符号移位结果相等。
负数时移位结果不想等。
-9>>>2=1073741821
Java运算符 与(&)、非(~)、或(|)、异或(^)、移位运算_第6张图片

你可能感兴趣的:(java)