《编码,藏匿在计算机软硬件背后的语言》读书笔记

1、逻辑门与真值表

2、半加器

把两个二进制位的加法分解为加法运算和进位运算

3、全加器

+111111

  111111

1111111

如上:半加器只能做右边第一列的计算,因为其他所有列的计算还需要一个进位输入,所以我们需要两个半加器。另外,排除所有的可能以后,两个半加器的进位输出不可能同时为1,根据真值表,我们还需要一个或门。

4、8位加法器

将8个全加器按如下方式串联,便可以得到一个可以进行8位运算的加法器

5、如何计算减法

例如计算253-176,传统方式我们像下面这样算:

 253

-176

   77

但是,在计算各位和十位的时候我们需要借位,然而如果我们像上面一样用逻辑门来实现借位的话,会非常复杂,有没有简单的办法呢?

换一个方式计算上面的算式:

253-176 = 253-176+1000-1000

              = 253-176+999+1-1000

              = 253+999-176+1-1000

              = 253+823+1-1000

              = 1076+1-1000

              = 1077-1000

              = 77

这样我们在不发生借位的情况下,完成了253-176的计算,同时我们把999-176叫做176对9求补数。

同样,在二进制中我们也可以这样计算,把上面的253-176转化成二进制后问题变为

11111101-10110000 = 11111101-10110000+100000000-100000000

                                  = 11111101-10110000+11111111+1-100000000

                                  = 11111101+11111111-10110000+1-100000000

                                  = 11111101+1001111+1-100000000

                                  = 101001100+1-100000000

                                  = 101001101-100000000

                                  = 1001101

1001101转换成十进制就是77,结果是正确的。我们把11111111-10110000叫做10110000对1求补数,但是在二进制中我们求补时不需要用减法,只要直接对10110000取反就行了,用反相器就可以实现了。

上面都是减数小于被减数的情况,如果减数大于被减数时怎么办?

猜你喜欢

转载自shenxueliang.iteye.com/blog/1674021