在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理
以下代码基于java
java 中数字做位运算时,都会补全32位(Short也是),如果强转为Long类型则会用64位。
以下以-4,4为例 ,长度以32位为准。
关于:原码,反码,补码(有符号位)
java 输出-4或4的补码。
正数
4的原码=0(28个0)100
正数的 原码=反码=补码
负数
注意:转换过程中:最高位符号位始终位置不变值也不变。
反码=(其他位取反,即1变0,0变1)
反码=(补码-1)
原码=反码除最高位符号位 全部取反。
补码=反码+1;
ym=-4原码= 1(中间28个0)100
fm=-4 反码=1(中间28个1)011
bm=-4补码=fm+1=1(中间28个1)100
移位运算
有符号右移 >>
负数 位运算过程:原码-》反码-》补码-》移位-》反