源码、反码、补码

正数的源码、反码、补码一致。

负数的反码是源码符号位不变,其余取反;负数的补码是反码加一。

在计算机里面只有加法运算。数都是以补码的形式存在。

同余:(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
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片