CPU 是怎样做到识数的?

使用 k 个bit,那么可以表示 2^k 个整数,范围从 0 到 2^k – 1,假设 k 有 8 位,那么表示范围就是 0 到 255,当然这里说的是无符号正整数。

现在我们可以表示正整数了,但真正有用的计算不可避免会涉及到负数,也就是带符号整数,而这也是真正有趣的地方。

有符号整数

正整数的表示非常简单,给定 k 个bit,那么我们可以表示 2^k 个数,假设k为4,那么我们可以表示16个数字。

如果要考虑有符号整数呢?

你可能会想这还不简单,一半一半嘛!其中一半用来表示正数,另一半用来表示负数!

假设有4个比特位,如果用来表示无符号正数,就是0 ~ 15,而如果要表示有符号整数,那么其中一半给到+1 ~ +7,另一半给到-1 ~ -7,

一切看最左边的 bit 是 0,如果最左边的 bit 位是 0 则表示正数,否则表示负数。

现在我们已经知道正负数是通过什么来决定的了,接下来的问题就是负数该怎么表示呢?也就是说对于比如-2,现在我们只知道其最左边的 bit 位是1,那么右边的这些 bit 到底该是多少呢?

关于这一问题就三种设计方法。

方法1:正数加上负号即对应负数

第一种设计方法很简单,既然0010表示+2,那么如果最左边的bit位替换成1就表示对应的负数,即1010表示-2,这种设计方法简单直接,这是最符合人类的思维的设计(不一定最好)。

如果这样设计的话,4个 bit 位能表示的所有数字就是:

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章