首页 > 代码库 > 补码理解
补码理解
关于补码的理解
1.理解周期:
以时间为例,12小时制,13点就代表了1点。对于处于3点的位置如何移动到8点?
1.顺时针移动5个点位。3 + 5 = 8
2.逆时针移动7个点位。3 - 7 = 8
2.加法减法:
在一个周期计数体制里进行减法可以归并为加法,以上述例子为准:3-7=3+5
推导过程:3-7 = 3-7 + 12 = 3 + (12-7) = 3+5
所以在进行减法计算时被减数可以存储为:(周期数-被减数)
3.关于补码:
为什么要以补码存储负数,如何让符号位参与运算?
计算机在表示整数时,必然以有限的字节表示,所以其本质还是一个周期的计数体制。
以1个字节为例,其周期数为:1,0000,0000 (从0000,0000到1111,1111共1,0000,0000个数)
需要解决的问题:x+(-y)如何计算,此处x,y均表示正数,问题可以归为-y如何存储。
借用2的结论,x+(-y) = x + (1,0000,0000-y)
1,0000,0000-y = 1111,1111-y + 1 = y每位取反 + 1
此处即回归到负数补码的计算: 负数补码 = 正数每位取反 + 1 = 负数原码去符号位每位取反 + 1
4.继续探讨:
可能你会想1个字节的最高位为1怎么办?那对应补码最高为就为0了?
答:由于是存储有符号整数,所以需要区分正负。如何区分呢?那就是最高位数字了。
补码理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。