本文討論了原碼,反碼與補碼相關的基礎知識:對于一個數, 計算機要使用一定的編碼方式進行存盤. 原碼, 反碼, 補碼是機器存盤一個具體數字的編碼方式.
機器數:一個數在計算機中的二進制表示形式, 叫做這個數的機器數,機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數為0, 負數為1.
例:十進制中的數 +3 ,計算機字長為8位,轉換成二進制就是00000011,如果是 -3 ,就是 10000011 ,
真值:將帶符號位的機器數對應的真正數值稱為機器數的真值,
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1
原碼:原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值.
例:8位二進制:取值范圍 [1111 1111 , 0111 1111],(-127,127);
[+1]原 = 0000 0001 [-1]原 = 1000 0001
反碼:正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其余各個位取反;反碼表示的是負數, 無法直觀的看出來它的數值. 需要將其轉換成原碼再計算;
[+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反
補碼:正數的補碼是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其余各位取反, 最后+1. (即在反碼的基礎上+1),通常也需要轉換成原碼再手動計算其數值;
[+1] = [00000001]原 = [00000001]反 = [00000001]補 [-1] = [10000001]原 = [11111110]反 = [11111111]補
[1000 0000] 表示-128
應用:
更加深入,請閱讀參考博客,本博客不進行重復總結了;
保持更新,轉載請注明出處;更多內容請關注cnblogs.com/xuyaowen;
參考博客:
原碼, 反碼, 補碼 詳解 (比較好的文章講解)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/65512.html
標籤:其他
