補碼運算方法和技巧?前文已經概述了負數用補碼表示的由來,但隻是證明了一個正數和其對應負數相加為零的特殊情況,對于更一般的加法的正确性,我們給出如下證明,我來為大家科普一下關于補碼運算方法和技巧?以下内容希望對你有幫助!
前文已經概述了負數用補碼表示的由來,但隻是證明了一個正數和其對應負數相加為零的特殊情況,對于更一般的加法的正确性,我們給出如下證明。
第一種情況:正數A減去正數B(A-B)
此時A-B相當于A (-B)則用補碼表示相當于 A 256-B,
1)當A>B時轉換成256 A-B,256加一個數相當于後八位全零加,則不影響A-B的值,此時得到正确的A-B的正值。
2)當A<B時轉換成256-(B-A),二此時256-(B-A)正好是B-A的補碼表示,得到正确的負值補碼。
第二種情況:負數A減去正數B(-|A|-B)
此時-|A|-B可轉換為256-|A| 256-B
當|A|>B時 上式又可轉化為 256-(|A| B) 在沒有小于-127溢出的情況下又是正确的表示了結果負數補碼的值。
其它情況大家可以參考自行證明。
最後看下特殊的情況:當我們計算-127-1時,補碼相加後,由于最高位産生進位,後八位變成了10000000,這個值符合我們負數的表示定義,即可以用來表示-128,同時又符合256-128的計算結果,當然我們不會表示 128.一般情況下任何兩數相加為-128時,我們都可以把其中的一個是拆成-|A| 1-1,相當于前例 -127-1的情況。這樣我們用10000000來表示-128就是完備的了。
綜上:
1) 負數的數字表達即為256減去其絕對值,也是我們人工計算的方法。計算-2的表示,我們用1 00000000減去00000010,我們手工計算的話,得到11111110,相當于把00000010按位取反再加上1,正數按位取反加上自身則8為全為1,再加上1則最高位進位後,8位全為0。
2)已知補碼的值,我們人工計算隻要用256減去這個值即可,計算機自己讀數的話就是減一後再按位取反。
初學者還是需要多練習思考。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!