奎克的藏经阁 · 原书印刷页

编码 隐匿在计算机软硬件背后的语言 · 第 159 页

PDF 物理页索引 175 · 编码隐匿在计算机软硬件背后的语言

书名
编码 隐匿在计算机软硬件背后的语言
作者
未记录
印刷页
159
PDF 物理页
175(从 0 开始)
章节
编码隐匿在计算机软硬件背后的语言
UUID
38270854-596f-4a26-8183-db8c968c6020
来源类型
original_book
页面 SHA-256
7f01c130b2775ec22047ccb535210192e49924ddb4ccdd21861a2ff71e14f4d1

这个系统为我们提供了一种不用负号就能表示正、负数的方法。同样也让我们自由地将正数和负数用加法法则相加。例如,将与-127和124等价的两个二进制数相加。利用上面的表格,可以简单地写为:

$$
\frac { 1 0 0 0 0 0 0 1 } { 1 1 1 1 1 0 0 }
$$

结果等于十进制的-3。

要注意的是,这里涉及了上溢和下溢情况,即结果大于127或小于-128。例如,将125与它自身相加:

$$
\textstyle \frac { 0 . 1 7 1 1 0 1 } { 1 . 1 1 1 0 1 }
$$

由于最高位为1,结果代表一个负数,相当于十进制的数-6。将-125与它本身相加也会出现同样的情况:

$$
\frac { 1 0 0 0 0 1 1 } { 1 0 0 0 0 0 1 1 0 }
$$

在一开始,我们规定所处理的数值为8位,因此最左位被忽略。右边8位相当于十进制的+6。

一般来说,如果两个操作数的符号相同,而结果的符号与操作数的符号不相同,这样的加法就是无效的。

现在,二进制数可以有两种不同的使用方法。二进制数可以是有符号的,也可以是无符号的。无符号的8位二进制数所表示的范围是0\~255。有符号的8位二进制表示的范围是-128\~127。无论是有符号的还是无符号的,数字本身是无法显示的。例如,如果有一个人问:“有一个8位二进制数,值为10110110。它相当于十进制的多少?”你必须先问:“它是有符号数还是无符号数?它可能为-74或者182。”

这就是二进制数的麻烦之处,它们只是一些0和1,本身并没有任何含义。

13 如何实现减法

159