原码、反码、补码解析,保证一次搞懂

本文深入探讨了二进制数的多种表示方法,包括原码、反码和补码的概念及其数学表达方式,适用于整数和小数的转换规则。通过具体的数值转换公式,帮助读者理解不同表示法之间的联系和区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

符号数

二进制符号数,其格式为

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

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

{[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]=Xn1Xn2X0X1X2Xm[X2]=+Xn1Xn2X0X1X2Xm

原码:

原码:符号位加上真值的绝对值,符号位0表示正,首位1表示负

具体数值:

{[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]=0Xn1Xn2X0X1X2Xm[X2]=1Xn1Xn2X0X1X2Xm

整数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+Xif(X0)if(2n<X<0)

小数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+Xif(X0)if(1<X<0)

反码:

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

{[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^n1X^n2X^0X^1X^2X^m[X2]=1X^n1X^n2X^0X^1X^2X^m

具体数值:
整数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+11Xif(X0)if(2n<X<0)

小数:
[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]={X22mXif(X0)if(1<X<0)

补码:

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

{[X1]补=0X^n−1X^n−2⋯X^0X^−1X^−2⋯X^−m+X−m[X2]补=1X^n−1X^n−2⋯X^0X^−1X^−2⋯X^−m+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_{-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}{[X1]=0X^n1X^n2X^0X^1X^2X^m+Xm[X2]=1X^n1X^n2X^0X^1X^2X^m+Xm

具体数值:
整数X:
[X]补={Xif(X≥0)2n+1−∣X∣if(−2n<X<0)[X]_补=\begin{cases} X & {if} (X\ge0) \\ 2^ {n+1} - |X| &{if} (-2_n\lt X<0) \end{cases}[X]={X2n+1Xif(X0)if(2n<X<0)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hack Rabbit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值