二進制加減運算進階(原碼/反碼/補碼/-1-1=(-1)+(-1)=-2)

計算機中數據以二進制方式0或1進行存儲,計算時也採用二進制進行,二進制計算過程中涉及到以下概念
原碼:數據對應的二進制表示,首位代表符號位0-正數,1-負數;
反碼:正數的反碼等於其原碼;負數的反碼是在其原碼的基礎上,符號位不變,其他位取反;
補碼:由於直接採用反碼計算,符號位也會參與計算,導致最終結果不準確,所以引進了補碼.正數的補碼等於其反碼同樣等於其原碼;負數的補碼等於其反碼+1.所以,在根據補碼推算原碼時,需要逆向計算,先補碼末位-1,再取反.
舉例:-1-1=(-1)+(-1)=-2
(1)-1的原碼,首位是1表示負數,其他位和其對應正數相同,即:1000 0001;
(2)-1的反碼,等於其原碼取反,因爲是負數,所以其首位符號位不變,其他位取反,即:1111 1110;
(3)-1的補碼,等於其反碼末位加1,即:1111 1111.
(4)則

(-1)+(-1)= 1111 1111(補碼)
                        1111 1111(補碼)
                        -------------
                        1111 1110(補碼結果)

(5)此時得到還只是補碼結果,需再把補碼結果逆向計算,先轉成反碼再轉成原碼,即補碼結果末位減1再取反:

			1111 1110(補碼結果)
   -                1(末位減1<因末位爲0,減1時需向左借1位,借位後末位變成2(二進制逢二進一),末位2-1=1,被借位減1變成0>)
			--------------------------
		    1111 1101(補碼結果對應的反碼)
		    1000 0010(對補碼結果對應的反碼取反(一樣的原則,取反時首位符號位不變),得到原碼,即計算結果,轉換成10進制,即-2)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章