跳转到内容

二进制数系统

来自维基教科书,开放书籍,开放世界

PAPER 2 - ⇑ 数据表示基础 ⇑

← 数制 二进制数系统 二进制数系统 →


规范覆盖范围
  • 3.5.4 - 二进制数系统
    • 3.5.4.1 - 无符号二进制
    • 3.5.4.2 - 无符号二进制算术
    • 3.5.4.3 - 使用二进制补码的符号二进制
    • 3.5.4.4 - 带小数部分的数字
    • 3.5.4.5 - 舍入误差(仅限 A 级)
    • 3.5.4.6 - 绝对误差和相对误差(仅限 A 级)
    • 3.5.4.7 - 范围和精度(仅限 A 级)
    • 3.5.4.8 - 浮点形式的规范化(仅限 A 级)
    • 3.5.4.9 - 下溢和上溢(仅限 A 级)

在上一章中,我们研究了常见的数制和进制。我们使用不同的数制,因为人类倾向于使用十进制,而计算机只能以二进制处理数据。作为计算机科学专业的学生,我们需要了解二进制的工作原理以及计算机如何在二进制中进行计算。

无符号二进制

[编辑 | 编辑源代码]
无符号二进制 - 表示正数的二进制。
符号二进制 - 带正负号的二进制。


有一种快速的方法可以找出给定位数的最大值。使用下面的公式,您可以找出使用 8 位二进制时可以获得的最大十进制值。

最大十进制值 = 表示位数。

例子

例如,对于 8 位:

当然,在无符号二进制中,最小十进制值为 0。


还有一种方法可以找出最大组合数,您只需使用以下公式: 表示位数。

例子

例如,对于 8 位:

这意味着如果您使用 8 位二进制,则有 256 种可能的组合。如果您使用 2 位二进制,也称为 个字节,您将执行以下操作:

这些将是 4 种组合

  1. 00
  2. 01
  3. 10
  4. 11

无符号二进制算术

[编辑 | 编辑源代码]

要将两个数字在二进制中加在一起,首先将数字对齐,就像您在十进制中进行列加法一样。

例子
      1 1      (carried digits)
    0 0 1 1 0 0 1 0
+   1 0 1 1 0 1 0 1
-------------------
=   1 1 1 0 0 1 1 1

现在从右侧开始添加列,记住您只能使用 0 和 1。

  • 0 + 0 等于 0,因此在答案行中写下 0
  • 0 + 1 或 1 + 0 都等于 1,因此在答案行中写下 1
  • 1 + 1 等于 10(一,零),因此在答案行中写下 0,并将 1 进位
  • 1 + 1 + 1 等于 11(一个,一个),所以把 1 写在答案栏里,进位 1。

您可以通过将所有数字转换为十进制,进行加法运算,然后将答案转换回二进制来检查您的答案。

在本例中,第一个数字的答案是 50,第二个数字是 181,所以答案应该是 231。

无符号二进制整数的乘法

[编辑 | 编辑源代码]

在二进制中进行乘法,您需要将第一个数字乘以第二个数字的每一位数字,从右边开始(与您在十进制中进行乘法的方式相同)。这意味着您将每个数字乘以 0 或 1,这将为您提供 0 或 1 作为答案。然后您对下一个数字进行相同的操作,将您的答案向左移动,就像您在十进制乘法中做的那样。


然后您进行二进制加法以找到最终答案。例如,要将 11011 乘以 11

例子
          1 1 0 1 1
x               1 1
-------------------
=         1 1 0 1 1
+       1 1 0 1 1 0
-------------------
=     1 0 1 0 0 0 1
        1 1 1 1      (carried digits)

请注意 LSB(最低有效位)上的零,因为数字已向左移动。

同样,您可以通过将二进制转换为十进制来检查您的答案。在本例中,第一个数字是 27(二十七),第二个数字是 3(三),所以答案是 81(八十一)。

二进制乘法的规则与十进制相同

  • 0 x 0 = 0
  • 0 x 1 = 0
  • 1 x 0 = 0
  • 1 x 1 = 1,并且没有进位或借位位

使用二进制补码的带符号二进制

[编辑 | 编辑源代码]
二进制补码 - 一种处理带符号二进制值的方法。


二进制补码是一种用于在二进制形式中表示带符号整数的方法。这意味着它可以用于表示正整数和负整数。本节展示了二进制补码如何表示负整数。

假设我们要使用二进制补码将二进制代码 100111002 转换为十进制。

步骤 1

写出十进制(或十进制,如果您愿意)等价物,如所示

1 0 0 1 1 1 0 0
步骤 1

蛋糕日星期五加入我们!!!

MSB LSB
1 0 0 1 1 1 0 0

二进制数系统

[编辑 | 编辑源代码]
华夏公益教科书