本篇文章的主要目的:讓已經了解two's complement運算規則的人,提供一個了解其為何如此神奇的理解方式
學校老師在教two's complement時,大概都會提到一個把正數轉為負數的簡易算法,例如:
Q: 現在有8 bits的表示空間,要用這8 bits表示-5該如何表示?
A:
0000 0101
1111 1010
1111 1010
+) 1
-----------
1111 1011 (ans = -5)
再以剛剛的例子來看
+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