關于反碼補碼的運算,反碼補碼計算器這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現在讓我們一起來看看吧!
1、說到二進制補碼,大家都知道:有符號數的負數的補碼是 其正數的反碼+1,例如 10001111 的補碼是反碼01110000 加 1 =01110001 ,很多書都這么說,可是為什么這樣計算的結果就是它的補碼?為什么要用補碼?很多書要么不解釋,要么就是說:這是因為在計算機內補碼計算最快。
2、(其實是補碼計算指令的CPU設計更容易實現) 最初我看的書,《大學計算機基礎教程》(我非計算機專業(yè)),這破書說不清,道不明,給與我非常嚴重負面的影響,以至于我在以后的計算機學習過程中,程序設計中遇到大大小小不少麻煩和迷茫。
3、在某些計算機組成原理書上提到:其實補碼的計算原理,是用一個模來減去無符號的正數部分。
4、譬如時鐘,12點之后是13點,但是時鐘上沒有13點怎么辦?就用13減去12=1點。
5、這個模是12.可惜這個比喻并不是很好。
6、請看 一個字節(jié)長的無符號數的表示范圍 :0~255,有符號數的表示范圍:-128~127 , 注意,這個表示范圍的寫法極有可能影響我們的思維,從而導致錯誤。
7、我們應該這樣來寫:0~127 ~ -128 ~ -1 ,這才是較好的寫法。
8、為什么?因為這個寫法的數的順序與0~255 一一對應。
9、由上,我們了解,其實補碼不過是用128 ~ 255 這段范圍的數來表示 ~128 ~ -1這段范圍的負數。
10、那么我們就可以憑自己,而不是看教材,就可以推測出計算補碼的公式,就是:256-欲求的負數的絕對值= 此負數的補碼。
11、沒錯,就是這么簡單的東西,可是卻困擾了很多人。
12、可見有個好的教材是多么的重要。
13、至于前面 “負數的補碼是 其正數的反碼+1” , 極為垃圾的教材才會把這個計算方法作為初始方法來教。
14、因為這個計算方法屏蔽了補碼的計算原理。
15、其實這不過是 “256 - 欲求的負數的絕對值 = 此負數的補碼”的一個比較取巧的計算方法而已。
16、請看 256=1 0000 0000 =1111 1111+1,而 1111 1111減任何二進制數的結果就是把這個數取反,那么 256 - 某二進制數A 既是:將 A取反 +1以上:完畢!注:所有討論均在字節(jié)長范圍內(8bit) 進行。
本文分享完畢,希望對大家有所幫助。
標簽:
免責聲明:本文由用戶上傳,如有侵權請聯系刪除!