1. 程式人生 > >原碼補碼相互轉換,簡單方法

原碼補碼相互轉換,簡單方法

大家都知道,對於計算機中的運算,都是以二進位制的形式計算,那麼很多時候,原碼,反碼,補碼的計算是很煩人的(對於我來說吧),所以有一種簡單的方式:

記住,以下是原碼和補碼互換的(負數),正數的補碼反碼和原碼是一樣的,這個你應該知道吧
(唯一的,也是獨特的)規則如下:從數的右邊往左開始數,遇到“0”不理它,直到遇到第一個“1”為止,以後的每一位數取反即是它的原碼或補碼,符號位不變,還是“1”(補碼的補碼是原碼)
如原碼:11010100 ----- 從右往左數,第一位是0,不理它,第二位還是0不理它,第三位是1,那麼從此以後的每位取反,即為它的補碼了.答案為:10101100
看懂了嗎?
你的題目:101011 (求補碼) 從右往左數,第一位是1,那麼,以後每位都取反,來吧,跟我來,倒數第一位是1,倒數第二位是0(因為要取反了),倒數第三位是1,倒數第四位是0,倒數第五位是1,第六位是符號位,還是1.那麼,最後的結果就是:110101


它的反碼當然只是求反而已了(除符號位之外的其它各位都取反即可),答案為:110100
補碼為101011,那麼它的原碼是什麼?
按照我剛說的,補碼的補碼就是原碼了.對這個數求補試試看.
會嗎?一樣的.從可往左數,倒數第一位是1,那麼以後每位都取反就成它的原碼了(因為這個數是一個補碼),答案就是:110101