iT邦幫忙

2

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

  • 分享至 

  • xImage
  •  

本篇文章的主要目的:讓已經了解two's complement運算規則的人,提供一個了解其為何如此神奇的理解方式

神奇的運算規則

學校老師在教two's complement時,大概都會提到一個把正數轉為負數的簡易算法,例如:

Q: 現在有8 bits的表示空間,要用這8 bits表示-5該如何表示?
A:

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

對於這兩種規則的三個重點

  1. 電腦做減法時是用加上一個負數的方式計算,而不是真的做減法,如此一來就不需要再特別去做一個減法器
  2. 所謂的負數(-x)其實就是那個跟正數(x)相加之後為0的數
  3. 想達到第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


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言