1.<
将数字的位向左移动指定的位数(二进制表示);
例:2<<2输出8
2的二进制表示为10,向左移动2位为1000,十进制为8.
2.>>(右移)
将数字的位向右移动指定的位数(二进制表示);
例:11>>1输出5
11的二进制表示为1011,向右移动1位为101,十进制为5.
3.&(按位与)
将数字(二进制)对应位数比较,若对应位都为1,则对应位为1,否则为0;
例:5&3输出1
5的二进制为101,3的二进制为011,按位与结果为001,十进制为1.
4.|(按位或)
将数字(二进制)对应位数比较,若对应位至少有一个为1,则对应位为1,若对应位都为0,则对应位为0;
例:5|3输出7
5的二进制为101,3的二进制为011,按位或结果为111,十进制为7.
5.^(按位异或)
将数字(二进制)对应位数比较,若对应位只有一个为1,则对应位为1,否则对应位为0;
例:5^3输出6
5的二进制为101,3的二进制为011,按位或结果为110,十进制为6.

6.~(按位取反)

计算机内部在做数学运算时(也就是计算机的0和1的运算),都是以补码为标准的,说白了计算机中就一种码那就是补码,而现实社会中的编码规则,例如原码、反码都是我们自定义的,为了和计算机中的补码形成转换关系。所以说在我们手工计算这类由计算机计算的01运算,要站在计算机的角度。因此首先就要将我们的原码反码全都先转为补码,再来计算.

正数的原、反、补码都是它本身;负数的原码最高位为1开头,反码是最高符号位不变,其余位在原码的基础上取反,补码是在反码的基础上+1即可得到.

例:~5输出6
5的补码:00000101
00000101按位取反,取反结果为: 11111010
这里的结果是用补码表示的,还是机器表示形式,转化为自然语言的编码,把结果转化为原码:
补码-1转为反码: 11111010 - 1 = 11111001
反码再取反转为原码:11111001 = 10000110
原码转为十进制,答案就是-6.
x按位取反运算公式为: -(x+1)

标签:右移,二进制,补码,取反,按位,对应,原码,位为