原码、反码、补码解析,保证一次搞懂
符號數(shù)
二進(jìn)制符號數(shù),其格式為
為了區(qū)別書寫表示的帶符號的二進(jìn)制數(shù)和數(shù)字系統(tǒng)中的帶符號二進(jìn)制數(shù),通常將用‘ + ’ ,‘ - ’ 表示正負(fù)的的二進(jìn)制數(shù)稱為符號數(shù)的真值,而把符號和數(shù)值一起進(jìn)行編碼的二進(jìn)制數(shù)成為機(jī)器數(shù)。
常用的機(jī)器數(shù)就分為原碼、反碼、補(bǔ)碼
設(shè){[X1]真=?Xn?1Xn?2?X0X?1X?2?X?m[X2]真=+Xn?1Xn?2?X0X?1X?2?X?m\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}{[X1]真?=?Xn?1?Xn?2??X0?X?1?X?2??X?m?[X2]真?=+Xn?1?Xn?2??X0?X?1?X?2??X?m??
原碼:
原碼:符號位加上真值的絕對值,符號位0表示正,首位1表示負(fù)
具體數(shù)值:
則{[X1]原=0Xn?1Xn?2?X0X?1X?2?X?m[X2]原=1Xn?1Xn?2?X0X?1X?2?X?m\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}{[X1]原?=0Xn?1?Xn?2??X0?X?1?X?2??X?m?[X2]原?=1Xn?1?Xn?2??X0?X?1?X?2??X?m??
整數(shù)X:
[X]原={Xif(X≥0)2n+∣X∣if(?2n<X<0)[X]_原 = \begin{cases} X &{if } (X\ge0) \\ 2^n+|X| &{if } (-2_n<X<0) \end{cases}[X]原?={X2n+∣X∣?if(X≥0)if(?2n?<X<0)?
小數(shù)X:
[X]原={Xif(X≥0)1+∣X∣if(?1<X<0)[X]_原 = \begin{cases} X &{if} (X\ge0) \\ 1+|X| &{if} (-1<X<0) \end{cases}[X]原?={X1+∣X∣?if(X≥0)if(?1<X<0)?
反碼:
反碼:正數(shù)的反碼是其本身,負(fù)數(shù)的反碼在原碼的基礎(chǔ)上符號位不變,其余各位按位取反
{[X1]反=0X^n?1X^n?2?X^0X^?1X^?2?X^?m[X2]反=1X^n?1X^n?2?X^0X^?1X^?2?X^?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}{[X1]反?=0X^n?1?X^n?2??X^0?X^?1?X^?2??X^?m?[X2]反?=1X^n?1?X^n?2??X^0?X^?1?X^?2??X^?m??
具體數(shù)值:
整數(shù)X:
[X]反={Xif(X≥0)2n+1?1?∣X∣if(?2n<X<0)[X]_反=\begin{cases} X & {if} (X\ge0) \\ 2^ {n+1} -1 - |X|&{if} (-2_n \lt X<0) \end{cases}[X]反?={X2n+1?1?∣X∣?if(X≥0)if(?2n?<X<0)?
小數(shù):
[X]反={Xif(X≥0)2?2?m?∣X∣if(?1<X<0)[X]_反=\begin{cases} X&{if}(X\ge0) \\ 2-2^{-m} - |X| & {if}(-1\lt X<0) \end{cases}[X]反?={X2?2?m?∣X∣?if(X≥0)if(?1<X<0)?
補(bǔ)碼:
補(bǔ)碼:正數(shù)的補(bǔ)碼是其本身,負(fù)數(shù)的補(bǔ)碼在原碼的基礎(chǔ)上符號位不變,其余各位按位取反再+1,也就是反碼+1,注意是最低位+1
{[X1]補(bǔ)=0X^n?1X^n?2?X^0X^?1X^?2?X^?m+X?m[X2]補(bǔ)=1X^n?1X^n?2?X^0X^?1X^?2?X^?m+X?m\begin{cases} [X^1]_補(bǔ) = 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]_補(bǔ)= 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}{[X1]補(bǔ)?=0X^n?1?X^n?2??X^0?X^?1?X^?2??X^?m?+X?m?[X2]補(bǔ)?=1X^n?1?X^n?2??X^0?X^?1?X^?2??X^?m?+X?m??
具體數(shù)值:
整數(shù)X:
[X]補(bǔ)={Xif(X≥0)2n+1?∣X∣if(?2n<X<0)[X]_補(bǔ)=\begin{cases} X & {if} (X\ge0) \\ 2^ {n+1} - |X| &{if} (-2_n\lt X<0) \end{cases}[X]補(bǔ)?={X2n+1?∣X∣?if(X≥0)if(?2n?<X<0)?
小數(shù):
[X]補(bǔ)={Xif(X≥0)2?∣X∣if(?1<X<0)[X]_補(bǔ)=\begin{cases} X&{if}(X\ge0) \\ 2 - |X| & {if}(-1\lt X<0) \end{cases}[X]補(bǔ)?={X2?∣X∣?if(X≥0)if(?1<X<0)?
總結(jié)
以上是生活随笔為你收集整理的原码、反码、补码解析,保证一次搞懂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统储存管理功能
- 下一篇: 微信小程序开发--如何在swiper中显