二进制的简单操作

时间:2014-04-30 06:18:51

标签: math binary operations

如何仅使用AND,OR,NAND,NOR,XOR等执行二进制数学运算+, - ,*,/和%?

我根本不了解二进制文件,我只知道操作在最基本的意义上做了什么以及如何计算到n。

1 个答案:

答案 0 :(得分:0)

这是一个广泛的主题。我给你二进制加法的答案(最简单的部分)

添加分为细胞。每个单元执行一位的添加。它与其他单元连接以处理进出。因此,每个单元有三个输入和两个输出:

<强>输入

  • A,第一个输入位
  • B,下一个输入位
  • Ci,从计算到右边的进位,如果是最低有效位,则为0。

<强>输出

  • X,输出位
  • Co,向左执行计算(连接到进位)

您可以为单元格设置真值表:

  A  B  Ci   X  Co
  0  0  0    0  0
  0  0  1    1  0
  0  1  0    1  0
  0  1  1    0  1
  1  0  0    1  0
  1  0  1    0  1
  1  1  0    0  1
  1  1  1    1  1

这为您提供了以下公式:

  • X =(A而非B而非Ci)或(不是A和B而不是Ci)或(不是A而不是B和Ci)或(A和B和Ci)
  • Co =(不是A和B和Ci)或(A而不是B和Ci)或(A和B而不是Ci)或(A和B和Ci)

请注意,您可以优化这些布尔表达式。

您可以使用相同的方案进行减法(借用而不是随身携带)。乘法和除法更难。据我所知,经常使用查找表。

三个连接的小区

           A2 B2       A1 B1       A0 B0
            |  |        |  |        |  |
            |  |        |  |        |  |
           ------      ------      ------
       --Co|    |Ci--Co|    |Ci--Co|    |Ci-- 0 (fixed)
       |   ------      ------      ------
       |      |           |           |
      X3     X2          X1          X0