原码、反码、补码解析,一次搞懂不香吗?

340 阅读1分钟

符号数

二进制符号数,其格式为 为了区别书写表示的带符号的二进制数数字系统中的带符号二进制数,通常将用‘ + ’ ,‘ - ’ 表示正负的的二进制数称为符号数的真值,而把符号和数值一起进行编码的二进制数成为机器数。

常用的机器数就分为原码、反码、补码

\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表示负

具体数值:

\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]_原 = \begin{cases}
   X &{if } (X\ge0) \\
   2^n+|X| &{if } (-2_n<X<0)
\end{cases}

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

反码:

反码:正数的反码是其本身,负数的反码在原码的基础上符号位不变,其余各位按位取反

\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]_反=\begin{cases}
X & {if} (X\ge0) \\
2^ {n+1} -1 - |X|&{if} (-2_n \lt X<0)
\end{cases}

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

补码:

补码:正数的补码是其本身,负数的补码在原码的基础上符号位不变,其余各位按位取反再+1,也就是反码+1,注意是最低位+1

\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]_补=\begin{cases}
X & {if} (X\ge0) \\
2^ {n+1} - |X| &{if} (-2_n\lt X<0)
\end{cases}

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