详解二进制补码
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
详解⼆进制补码
过去学计算机组成原理时⼀直没有搞明⽩补码的意义,今天听了王红⽼师的数字电⼦基础课才了解到,惭愧!
数制和码制
在正⽂开始之前,⾸先要明确两个概念,就是数制和码制,
⽐如下⾯这个数字:
100832
他可能代表的是整型值⼗万零⼋百三⼗⼆,这就是数制;但如果它代表的是邮政编码,这就是码制;
⼆进制补码
带符号⼆进制的运算依赖于补码,如
+5: 0 0101
-5: 1 0101
最⾼位为0则为正,为1则为负。
正常来讲我们将其相加应该是0,但实际上:
00101
+10101
------
11010
直接相加得到的结果并不是我们想要的,这是因为哦这样想加混淆了数制和码制,最⾼位的0和1并不和地位⼀样代表着数值,所以和它们⼀起直接计算必然就会出错。
所以带符号的⼆进制数的计算依赖于补码,补码的表⽰如下:
+5: 0 0101
-5: 1 1011
这⾥有⼏个要解释和注意的点:
补码和原码的转换规则:正数补码和原码相同,负数的补码为原码的数值位取反加⼀、符号位不变
补码的计算:
如-5的补码为 11011,即−24+23+21+20=−16+8+2+1=−5,即符号位代表了⼀个很⼤的负数值,⾜以纠正数制位的正数值。
从这⾥也能理解为什么n位⼆进制补码可以表达的范围为−2n−1...2n−1−1
负数的补码需要添位时直接往⾼位添1即可
符号位的处理:最终的符号位就是两者符号位相加再加上上来的进位
考虑到结果的位数,要清楚的知道最后的范围是多少,否则就会出错。
考虑5位补码运算13+10:
0 1101
0 1010
-------
1 0111=-7
Processing math: 100%。