正数的原 反 补码都是一样的(最高位是0)
负数的原 反 补码需要计算(最高位是1)
负数原 反 补码计算:
原码→反码:符号位不变其它位取反。
原码→补码:在反码的基础上+1。
补码→原码:1、补码-1,符号位不变其它位取反。
2、补码符号位不变其它位取反+1。
在计算机储存中存放的是二进制补码,而打印显示在屏幕上面的是原码。
操作符中的左移操作符(<<)和右移操作符(>>)
移动的是一个数中二进制补码的位。
<<:左边移动一位,右边就会空出一位,空出的位置补0。
>>:右移分为算数右移和逻辑右移;
算数右移:右边移动一位,左边就会空出一位,空出的位置是符号位补原来的的符号位的数是1补1,是0补0。
逻辑右移:右边移动一位,左边就会空出一位,空出的位置补0。
操作符中的&(按位与),|(按位或),^(按位异或)“对象也是二进制的补码”
&(按位与):有0取0,两个都为1才取1。
| (按位或):有1取1,两个都为0才取0。
^(按位异或):相同取0,不同取1。
例:
a=10
b=20
a的二进制:00000000000000000000000000001010
b的二进制:00000000000000000000000000010100
c=a&b :00000000000000000000000000000000
c=a|b :00000000000000000000000000011110
c=a^b : 00000000000000000000000000011110
操作符中的~,二进制中的数全部取反包括符号位“对象也是二进制的补码”
例:
a=0
a的二进制: 00000000000000000000000000000000
~a的二进制:11111111111111111111111111111111
~过后的a就等于-1