补码理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了补码理解相关的知识,希望对你有一定的参考价值。
关于补码的理解
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了?
答:由于是存储有符号整数,所以需要区分正负。如何区分呢?那就是最高位数字了。
以上是关于补码理解的主要内容,如果未能解决你的问题,请参考以下文章