计算机组成原理 | 理解二进制编码

二进制的转换

二进制——> 十进制

  • 从右到左的第 N 位,乘上一个 2 的 N 次方,然后加起来,就变成了一个十进制数
  • 例如二进制数:0011,对应的十进制表示,就是 0 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 = 3 0×2^3+0×2^2+1×2^1+1×2^0=3 0×23+0×22+1×21+1×20=3,代表十进制的 3 3 3

十进制——> 二进制

  • 短除法

    1. 将十进制数除以2,并记录余数。
    2. 将商继续除以2,再次记录余数。
    3. 重复此过程,直到商为0为止。
    4. 将记录的余数按相反的顺序排列,即可得到对应的二进制数。

例如,将十进制数23转换为二进制:

  • 23 ÷ 2 = 11 余 1
  • 11 ÷ 2 = 5 余 1
  • 5 ÷ 2 = 2 余 1
  • 2 ÷ 2 = 1 余 0
  • 1 ÷ 2 = 0 余 1

然后,将记录的余数按相反的顺序排列:10111

二进制的相加操作

二进制相加的规则如下:

  • 0 + 0 = 0
  • 0 + 1 = 1
  • 1 + 0 = 1
  • 1 + 1 = 0,产生一个进位(carry)

例如:

   1 0 1 1     (1011)
+  0 1 0 1     (0101)
------------
   1 1 0 0     (1100)
  • 从最右边的位开始相加,根据规则,1 + 1 = 0,并且产生了一个进位。这个进位需要加到下一位的相加结果中。依次相加,最后得到结果1100。
  • 如果相加的两个二进制数的位数不同,那么在相加之前需要对齐它们的位数。可以在较短的二进制数的左侧补零,使它们的位数相等,然后再进行相加操作

二进制的减法操作

减法运算步骤

  • 二进制减法可以通过将减法转换为加法来完成,其中使用补码形式进行相加,并进行进位处理。

下面是二进制减法运算的步骤:

  1. 将减数转换为补码形式(如果减数为负数)。

    • 如果减数为正数,无需转换。
    • 如果减数为负数,需要将其转换为补码形式。转换方法是先取其绝对值的二进制表示形式,然后按位取反(0变为1,1变为0),最后加1。
  2. 使用补码形式的减数与被减数进行二进制相加。

    • 采用与二进制加法相同的步骤,从最低位(最右边)开始逐位相加,并处理进位。
  3. 检查结果的最高位(最左边的位)确定其正负性。

    • 如果最高位为1,表示结果为负数。
    • 如果最高位为0,表示结果为正数。
  4. 如果结果为负数,将结果转换为正数形式。

    • 将结果的补码形式的最高位取反(0变为1,1变为0)得到反码。
    • 对反码加1得到正数形式。
  5. 最终结果即为减法的结果。

减法示例

假设我们要计算-51的结果:

-5 + 1 = ?
  1. 被减数(-5)转换为补码形式:

    首先,取其反码:1010

    然后,将反码加1:1011

    所以,-5的补码为:1011

  2. 1的二进制表示为:0001

现在,我们将进行二进制的相加操作:

  1011  (-5)
+ 0001  (+1)
----------

从最右边的位开始相加:

  • 第一位(最低位):1 + 1 = 10。将0写在当前位上,并将1作为进位。
  1011  (-5)
+ 0001  (+1)
----------
     0
  • 第二位:1(进位)+ 1 + 0 = 10。将0写在当前位上,并将1作为进位。
  1011  (-5)
+ 0001  (+1)
----------
    00
  • 第三位:1(进位)+ 0 + 0 = 1。将1写在当前位上。
  1011  (-5)
+ 0001  (+1)
----------
   100
  • 第四位:1 + 0 = 1。将1写在当前位上。
  1011  (-5)
+ 0001  (+1)
----------
  1100
  • 最终结果的最高位为1,说明结果是负数,所以:1100是一个负数。

接下来,我们需要将结果转换为正数形式:

  1. 取补码的反码:0011
  2. 将反码加1得到:0100

最后得到:-5 + 1 = -4

表:二进制相加

(C:\Users\22319\AppData\Roaming\Typora\typora-user-images\image-20230615163731785.png)]

参考文献

猜你喜欢

转载自blog.csdn.net/YuvalNoah/article/details/131234936