https://blog.csdn.net/mxiaoyem/article/details/78569782按位运算符详细讲解
按位运算符
1.与(&) 按位“与”操作符,如果二个数的二进制,相同位数都是1,则该位结果是1,否则是0。
案例:Int 类型4个字节,4*8=32位有效字节位。
5 => 0000 0000 0000 0000 0000 0000 0000 0101
2 => 0000 0000 0000 0000 0000 0000 0000 0010
&运算结果 0000 0000 0000 0000 0000 0000 0000 0000
2.或(|) 按位“或”操作符,如果二个数的二进制,相同位数有一个是1,则该位结果是1,否则是0。
案例:
5 => 0000 0000 0000 0000 0000 0000 0000 0101
2 => 0000 0000 0000 0000 0000 0000 0000 0010
|运算结果 0000 0000 0000 0000 0000 0000 0000 0111
3.异(^) 按位“异”操作符,如果二个数的二进制,相同位数只有一个是1,则该位结果是1,否则是0。
案例:
5 => 0000 0000 0000 0000 0000 0000 0000 0101
2 => 0000 0000 0000 0000 0000 0000 0000 0010
&运算结果 0000 0000 0000 0000 0000 0000 0000 0111
4.非(~) 按位“非”操作符,属于一元操作符,只对一个操作数进行操作。按位“非”生成与输入位相反的值,若输入0,则输出1。可以采取取负减一法,即~i=(-i)-1;
案例:
5 => 0000 0000 0000 0000 0000 0000 0000 0101
~运算结果 1111 1111 1111 1111 1111 1111 1111 1010
2 => 0000 0000 0000 0000 0000 0000 0000 0010
~运算结果 1111 1111 1111 1111 1111 1111 1111 1101
补充知识点:
1.电脑的世界中只有0和1,所以二进制的正负是从高位看,最高位如果是1,则是负数;如果是0,则是正数。
2.负数的二进制转化,计算机计算是用补码!
3.负数的反码是对除符号位(最高位)对原码取反,补码是对反码+1。
案例:
5 => 0000 0000 0000 0000 0000 0000 0000 0101
-5 => 1000 0000 0000 0000 0000 0000 0000 0101
反码 1111 1111 1111 1111 1111 1111 1111 1010
补码 1111 1111 1111 1111 1111 1111 1111 1011