我个人理解two's complement的方式

本篇文章的主要目的:让已经了解two's complement运算规则的人,提供一个了解其为何如此神奇的理解方式

神奇的运算规则

学校老师在教two's complement时,大概都会提到一个把正数转为负数的简易算法,例如:

Q: 现在有8 bits的表示空间,要用这8 bits表示-5该如何表示?
A:

先表示出+5:
0000 0101
把0转成1,1转成0
1111 1010
再加上1,就是答案-5的表示方式了
  1111 1010+)        1-----------  1111 1011 (ans = -5)

对于这两种规则的三个重点

电脑做减法时是用加上一个负数的方式计算,而不是真的做减法,如此一来就不需要再特别去做一个减法器所谓的负数(-x)其实就是那个跟正数(x)相加之后为0的数想达到第2点,就必须要使用overflow的特性

再以刚刚的例子来看
+5:

0000 0101

想让5跟其他的数相加后为0的方法:

  0000 0101 (原本的5)  1111 1010+)        1-----------1 0000 0000 (已经overflow了,以电脑的观点来看,这是0)

所以以电脑的观点而言

  1111 1010+)        1-----------  1111 1011 (-5)

的部份就是那个与5相加后为0的那个数 => -5


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章