原码
什么是原码
原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
最大值 0 1 1 1 1 1 1 1 => +127
最小值 1 1 1 1 1 1 1 1 => -127
原码的弊端
利用原码对正数进行计算是不会有问题的
但是如果是负数计算,结果就会出错,实际运算结果,跟我们预期结果是相反的。
反码
目的
为了解决不能计算负数的问题而出现的
计算规则
正数的反码不变,负数的反码在源码的基础上,符号位不变,数值取反,0变1,1变0。
例:
-56 原码 1 0 1 1 1 0 0 0
-56 反码 1 1 0 0 0 1 1 1
反码的弊端
负数运算时,结果不跨0,没问题,结果跨0,跟实际结果会有1 的偏差
补码
目的
为了解决负数计算时跨0的问题而出现的
计算原则
正数的补码不变,负数的补码在反码的基础上+1
正数的原码,反码,补码相同
补码的注意点
计算机中存储和计算机以补码的形式进行的
-128 = > 1 0 0 0 0 0 0 0 没有原码和反码
所以一个字节取值单位 -128~127
<< 向左移动,低位补0
(8) 00001000 << 2 = > (32) 00100000
右移: >>向右移动,高位补0 或 1(补1补0跟原来的保持一致)
(8) 00001000 >> 2 => (2) 00000010
无符号右移 >>> 向右移动,高位补0