计算机组成原理--求相反的数

计算机组成原理--求相反的数在计算机中求相反的数 也就是是 求补

大家好,欢迎来到IT知识分享网。

  什么是 “相反的数”?
  在小学都学过:绝对值相等、符号相反的两个数,就是互相相反的数。
  已知一个数 X,怎么求 X 的相反数呢?
  在前面加个负号(-),得到一个-X,这就是 X 的相反数了。
  小学的知识点,不难吧? 到了计算机里面,可就不这么简单了。



  在计算机系统中,正负数值,一律采用补码表示和存储。
  正数的补码、负数的补码,相差的,可就不仅仅是一个符号了。
  下面就是正负数值与其八位补码的对照表。

 ----------+------------   十进制数 | 二进制补码 ----------+------------    + 127 | 0111 1111    + 126 | 0111 1110    + 125 | 0111 1101    + 124 | 0111 1100 . ... | .... ....    + 3 | 0000 0011    + 2 | 0000 0010    + 1 | 0000 0001    0 | 0000 0000    - 1 | 1111 1111    - 2 | 1111 1110    - 3 | 1111 1101 . ... | .... ....    - 125 | 1000 0011    - 126 | 1000 0010    - 127 | 1000 0001    - 128 | 1000 0000 ----------+------------

  由表中数据可以看出,正数的补码负数的补码,相差的不仅仅是最高位的符号位了,而是相差了几乎全部的八位数。 由此可知,最高位就是符号位的说法,是有错误的。 应该说,全部的八位数,都与符号有关,也可以说,补码的全部位,都是符号位。

  计算机教材上的说法是:利用求补运算,就可以把正数的补码,变换成负数的补码,并且,也能把负数的补码,变换成正数的补码
  
所谓的求补运算,就是:连同最高位一起,全部都取反加一。
  如果用门电路来实现求补运算,是很麻烦的。 转换八位数时,就必须使用八个非门来取反,还得再用一个八位的加法器来做八位数加一。 这就太麻烦了!

  其实,就不用费那么多闲心了,利用小学的知识,就能解决这个问题。

  由等式:X-X = 0,就可以推出:-X = 0-X。
  再把式中各项,都转换成补码,即有:[-X ]补 = [ 0 ]补-[ X ]补。
  对于八位机来说,式中的 [ 0 ]补,应该就是八个 0。
  那么,上式即为:[-X ]补 = 0000 0000-[ X ]补。 用八位的减法电路就能完成这个转换。


  在上篇博文实用的减法器中,做而论道给出了一个减法电路,可实现:F = A-B-CN。
  针对本次需求,只要把 A 和 CN 都定为 0,正负数的互相转换,不就可以完成了吗?
  下图就是正负数转换的电路。电路中的 A7~0 和 CN 已经都接到低电平了。
  待转换的是 B7~0 = 0000 0001,这就是 +1 的补码。
  两片 ALU 做的是八位减法运算,计算结果 F7~0 = 1111 1111,这正是-1 的补码。



计算机组成原理--求相反的数

  再换一个数字:B7~0 = 0101 1010 = 90,转换一下试试看,结果如下图所示。

计算机组成原理--求相反的数

  可看到,转换结果 F7~0 = 1010 0110,这正是-90 的补码。 转换正确。

  上面两次转换,都是:由正数的补码转换到了负数的补码,这两个补码的(十进制)绝对值,是相同的。所以,转换之前和之后的两个数值,确实是相反的数。

  反过来转换,是否正确呢? 请看下面的两个截图。

计算机组成原理--求相反的数

  上图是把-1 的补码 1111 1111,转换成了 +1 的补码 0000 0001。

计算机组成原理--求相反的数

  上图则是把-90 的补码 1010 0110,转换成了 +90 的补码 0101 1010。

  本博文,介绍了减法电路的一个应用:求相反的数。
  在计算机领域,则应该说:
求相反的数的补码。也就是计算机专家所说的:求补

  通过本博文的介绍,应该对求补运算,有更深入的理解了。学到了更为简单的求补方法。 而且,利用减法来求补,是完全符合数学理论基础的。 至于 “取反加一”,是无法看出它有什么理论的!

  实际上,减法电路在计算机中的应用,还是很多的。
  但是,《计算机组成原理》忽略了 “减法器” 这个内容,反而总去讲用
取反加一再相加来代替减法运算。讲的既麻烦又落后,真不知道这些个专家和老师都是怎么想的!
  这么简单又先进(总比取反加一稍稍先进一点吧)的知识,怎么就不给学生讲呢?

 

--本文完--

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128653.html

(0)
上一篇 2025-08-30 12:33
下一篇 2025-08-30 12:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信