关于补码的补充说明
2019-04-13 13:01发布
生成海报
关于补码的补充说明
-
时钟类比
时钟的计量范围是0 ~ 11, 表示12个数,模 = 12
[−2]补=模−∣−2∣=12−∣−2∣=10
“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可以化减法为加法运算。
“-2点”和10点为互补关系。"-2"点的补码是10点。
10 + 3 = 13点,执行加法运算,表示1点(13/10的余数)。
-2 + 3 = 1点,执行减法运算。
因此加法运算与减法运算的效果是一样的。
以12为模的时钟中,1和11, 2和10, 3和9, 4和8, 5和7, 6和6均有一个共同的特性,就是二者相加等于模,互为补数关系。
-
8比特数值编码
8比特编码表示数值的范围是0X00 ~ 0XFF, 表示28个数,模 = 28。它表示的最大数是0XFF, 就是1111 1111, 如果再加1,成为1 0000 0000,因为只有8位,最左端的1自然丢失,回到0X00.
负数的补码 = 28 - 该数的绝对值
= 0XFF + 0X01 - 该数的绝对值
= 0XFF - 该数的绝对值 + 0X01
= 负数的反码 + 1
-
结论
(1) 正数: 原码 = 反码 = 补码 = 符号位为0,其他位表示数的绝对值
(2) 负数: 原码 = 符号位为1,其他位表示数的绝对值。补码 = 反码+1,反码 = 符号位不变,其他位按位取反
(3) 补码是可逆的,即再对补码求补得到原码。
(4) 对于有符号数,机内存储数值的补码。
采用补码运算具有如下两个特征:
(a) 因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处
理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。
(b)两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
-
8比特编码特例
- 统一正负0
[+0]原码=(0000 0000)2
[−0]原码=(1000 0000)2
都是0,但是原码不同,补码相同都是0.
[10000000]补=[1000 0000]反+1
=1111 1111+1=(1)0000 0000=0000 0000
最高位溢出。
- 规定:
[1000 0000]补=[1000 0000]原码=−128
- -1和+1的补码
[−1]补=[10000000]补=1111 1110+1=1111 1111=0XFF
[+1]补+[−1]补=0000 0001+1111 1111=0000 0000 最高位溢出
- +127和-127的补码
[+127]补=(0111 1111)=0X7F
[−127]补=(1111 1111)反+1=1000 0000=0X80
- 8比特编码表示数值范围
-127 ~ 127在加上规定-128, 表示范围成为-128 ~ 127, 即−27至27−1
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮