计算机是怎么保存负数的?

前面几篇谈到了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。

你可能感兴趣的:(计算机是怎么保存负数的?)