原碼、反碼、補碼解析,保證一次搞懂

符號數

二進制符號數,其格式爲

爲了區別書寫表示的帶符號的二進制數數字系統中的帶符號二進制數,通常將用‘ + ’ ,‘ - ’ 表示正負的的二進制數稱爲符號數的真值,而把符號和數值一起進行編碼的二進制數成爲機器數。

常用的機器數就分爲原碼、反碼、補碼

{[X1]=Xn1Xn2X0X1X2Xm[X2]=+Xn1Xn2X0X1X2Xm\begin{cases} [X^1]_真 = -X_{n-1}X_{n-2}\dotsm X_0X_{-1}X_{-2}\dotsm X_{-m} \\ [X^2]_真 = +X_{n-1}X_{n-2}\dotsm X_0X_{-1}X_{-2}\dotsm X_{-m} \end{cases}

原碼:

原碼:符號位加上真值的絕對值,符號位0表示正,首位1表示負

具體數值:

{[X1]=0Xn1Xn2X0X1X2Xm[X2]=1Xn1Xn2X0X1X2Xm\begin{cases} [X^1]_原 = 0X_{n-1}X_{n-2}\dotsm X_0X_{-1}X_{-2}\dotsm X_{-m} \\ [X^2]_原= 1X_{n-1}X_{n-2}\dotsm X_0X_{-1}X_{-2}\dotsm X_{-m} \end{cases}

整數X:
[X]={Xif(X0)2n+Xif(2n<X<0)[X]_原 = \begin{cases} X &{if } (X\ge0) \\ 2^n+|X| &{if } (-2_n<X<0) \end{cases}

小數X:
[X]={Xif(X0)1+Xif(1<X<0)[X]_原 = \begin{cases} X &{if} (X\ge0) \\ 1+|X| &{if} (-1<X<0) \end{cases}

反碼:

反碼:正數的反碼是其本身,負數的反碼在原碼的基礎上符號位不變,其餘各位按位取反

{[X1]=0X^n1X^n2X^0X^1X^2X^m[X2]=1X^n1X^n2X^0X^1X^2X^m\begin{cases} [X^1]_反 = 0\hat X_{n-1}\hat X_{n-2}\dotsm \hat X_0\hat X_{-1}\hat X_{-2}\dotsm \hat X_{-m} \\ [X^2]_反= 1\hat X_{n-1}\hat X_{n-2}\dotsm \hat X_0\hat X_{-1}\hat X_{-2}\dotsm \hat X_{-m} \end{cases}

具體數值:
整數X:
[X]={Xif(X0)2n+11Xif(2n<X<0)[X]_反=\begin{cases} X & {if} (X\ge0) \\ 2^ {n+1} -1 - |X|&{if} (-2_n \lt X<0) \end{cases}

小數:
[X]={Xif(X0)22mXif(1<X<0)[X]_反=\begin{cases} X&{if}(X\ge0) \\ 2-2^{-m} - |X| & {if}(-1\lt X<0) \end{cases}

補碼:

補碼:正數的補碼是其本身,負數的補碼在原碼的基礎上符號位不變,其餘各位按位取反再+1,也就是反碼+1,注意是最低位+1

{[X1]=0X^n1X^n2X^0X^1X^2X^m+Xm[X2]=1X^n1X^n2X^0X^1X^2X^m+Xm\begin{cases} [X^1]_補 = 0\hat X_{n-1}\hat X_{n-2}\dotsm \hat X_0\hat X_{-1}\hat X_{-2}\dotsm \hat X_{-m} + X_{-m}\\ [X^2]_補= 1\hat X_{n-1}\hat X_{n-2}\dotsm \hat X_0\hat X_{-1}\hat X_{-2}\dotsm \hat X_{-m} + X_{-m} \end{cases}

具體數值:
整數X:
[X]={Xif(X0)2n+1Xif(2n<X<0)[X]_補=\begin{cases} X & {if} (X\ge0) \\ 2^ {n+1} - |X| &{if} (-2_n\lt X<0) \end{cases}

小數:
[X]={Xif(X0)2Xif(1<X<0)[X]_補=\begin{cases} X&{if}(X\ge0) \\ 2 - |X| & {if}(-1\lt X<0) \end{cases}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章