正数的源码、反码、补码一致。
负数的反码是源码符号位不变,其余取反;负数的补码是反码加一。
在计算机里面只有加法运算。数都是以补码的形式存在。
同余:(6-2)mod12=4和(6+10)mod12=4同余,时钟向前拨2个小时和向后拨10个小时结果一致。前后波动时钟代表加减法。
当存在减法时,2-1转换为2+(-1)。
源码:00000010 + 10000001反码:00000010 + 11111110源码:00000010 + 11111111不带符号位的反码参与运算
(-1) mod 127 = 126
126 mod 127 = 126
2-1 ≡ (2+126) mod 127
带符号位的补码参与运算(因为此时模为128,最高位为1时,取模相当于只有低7位参与运算)
(-1) mod 128 = 127
127 mod 128 = 127
2-1 ≡ (2+127) mod 128
对于带符号的二进制数按最高位符号分为正数和负数,最高位为1说明这些值在实际计算中在表盘上多走了半圈,也就是说减去一个数x,相当于在加128基础上再加上(128-|x|)。
原码转补码过程就是:符号位不变(最高位表示的半圈——加128),其余位置取反加1(余下七位二进制表示的模为127,取反加1就是执行127-|x|+1)。
而在模的概念中,减法等同于加上这个减数的同余数
负数的补码等于模减去该数的绝对值
无符号右移 >>> 高位补0,低位舍去
有符号左移 << 低位补0,高位舍去
有符号右移 >> 高位补1(负数时),低位舍去
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END