1.簡單的介紹
原碼:符號位+數值,比如:-1 = 10000001;
反碼:正數的反碼與原碼相同,負數的反碼是符號位不變,其他位數取反,-1的反碼 = 11111110;
補碼:正數的補碼與原碼相同,負數的補碼是反碼加1,-1的補碼 = 11111110 + 00000001 = 111111111;
2.為什麼要有這麼多種碼!?
按照人腦邏輯,原碼就可以進行所有的運算了,那為什麼要有反碼和補碼呢?
計算機當然也能做到按照原碼運算,從介紹可以看出其實問題就出在負數上面,因為正數的反碼和補碼都是原碼本身:
事實上反碼的引入使得計算機可以用加法運算代替減法運算,比如5 - 3 = 5 + (-3);
所以計算機中實際上沒有減法,簡化了計算模式.
那麼為什麼要有補碼?
補碼的出現是因為乙個特殊的情況,那就是0000 0000 = 1000 0000的情況,當
1 - 1 = 0000 0001 + 1111 1110 = 1111 1111 = 1000 0000 = -0 = 00000000
出現用兩個二進位制來表示相同值的情況,所以出現了補碼的計算,當:
-64 - 64 = 1100 0000 + 1100 0000 = 1011 1111 + 1011 1111 = 1100 0000 + 1100 0000 (補碼) = 1000 0000 = -128
補碼使得二進位制的符號位同樣參與運算,這個加1操作原理有點類似於滿週期從頭再來的原理.也因此補碼的範圍比其他表示範圍多乙個數字[-128,127].
補碼原碼反碼簡單理解
看到一句i2s的data是以補碼形式來表現資料。再次查閱得出以下只管結論 1,首先直觀舉例機器裡面是如何存放有符號數的 1在機器裡面表示為 0000 0001h 0在機器裡面表示為 0000 0000h 1在機器裡面表示為1111 1111h 2在機器裡面表示為1111 1110h 其實機器並不知道...
原碼 反碼 補碼簡單分析
原碼 signed magnitude 是一種計算機中對數字的二進位制定點表示方法。原碼表示法在數值前面增加了一位符號位 即最高位 msb 為符號位 正數該位為0,負數該位為1 0有兩種表示 0和 0 其餘位表示數值的大小。優點 簡單直觀 例如,我們用8位二進位制表示乙個數,則 11的原碼為0000...
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...