前面几篇谈到了2进制数如果不考虑负数的情况下,如何表示以及如何做加法和减法。
让我们快速复习下,3位的二进制数,可以表示的正整数范围是0到7。6-2等于6+(7-2+1)-8
那么如果要考虑负数的情况,又是怎么样?
首先,需要占用1位来表示正/负,那么可以表示的数就在00到11之间了。
00到011的部分可以表示0-3,那么111又代表什么?
假设把符号位忽略掉,用上一篇的知识来看(也就是把能表示的最大数从7变成了3),11其实是1的补码。再带上符号位,代表的就是-1。同理,再把其他情况枚举一下:
负数的表示除了100所代表的,其他的负数都可以用对应正数的补码来表示。如果用它来表示-0,未免有点浪费。如果把位数拓展一下,把符号位也当成数据位,可以看成4的补码。那么就用它来表示-4吧。
所以,3位二进制数能表示的数字范围变成了从-4到+3。
网友评论