二进制的原码、反码、补码、移码

 我来答
天罗网17
2022-06-27 · TA获得超过6200个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:73.6万
展开全部

之前了解一些原码、反码、补码,但是一直有疑问,为什么会有原码、反码、补码?所以决定研究一下。

计算机中参与运算的数有两大类:无符号数和有符号数。此篇主要看一下有符号数。在了解原码、反码、补码前需要先了解机器数和真值。

对于有符号数而言,使用“0”表示正,“1”表示负,这种把符号“数字化”的数称为 机器数 ,也就是一个数在计算机中的二进制表示。

例如:+1100 在机器中表示为 0 1100;-1100 在机器中表示为1 1100

整数的符号位和值用逗号隔开,小数的小数点用点来隔开。
例如:+3转换成二进制就是00000011,-3就是10000011,这就是机器数。

带符号位的机器数对应的真正数值就是 真值 。例如:1000 0011的真值是-3,而不是131,它的最高位是符号位。

下面开始说原码、反码、补码。

原码是机器数中最简单的一种表示形式,包括符号位和数值位。

原码: 符号位加上真值的绝对值,即第一位表示符号位,其余为表示值。原码是人脑最容易理解和计算的表示方式。

整数原码的定义:

小数原码的定义为:

原码的问题:
以正负1来说明问题,先来看1+(-1)的计算过程:

1+(-1)=0,但是用原码来算结果却是-2,原码的加法没有问题,但是减法却出现了问题。

为了解决原码做减法时出现的问题,出现了反码,我们用其他的方式来表示负数,使减法的问题用加法去解决。

补数的思想:
要了解补码的思想就要知道“模”、“同余”、“补数”的概念。

在日常生活中,常会遇到“补数”的概念。计算机组成原理(唐朔飞)中举了一个时钟的例子,现在是6点钟,要到达3点钟的话该怎么办呢?我们可以顺时针方向将时针移动9小时,或是逆时针移动3小时,我们都可以到达3点钟,假设顺时针转为正,逆时针转为负,则有:

钟表时针转一圈能代表12个小时,在数学上称12为模,写作mod 12,对于mod 12而言,+9和-3互为补数,3和15是同余关系,记作3≡15 (mod 12),3 + 12 = 15.

其实就相当于没到12点就丢失,从0点重新开始。

将补数的概念用到计算机中,便出现了补码这种机器数。

补码 :正数的反码是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1),这里只是便于计算才这样说。

对于补码,相当于是模加上真值,就如同上面的6+(-3),-3就是真值。
整数补码的定义为:

例如:
当x=+1010时,[x] =0,1010;
当x=-1101时,[x] =2 n+1 + x = 2 5 - 1101 = 100000 - 1101 = 1,0011

小数补码的定义为:

小数补码定义中mod 2的由来:

例如:
当x=+0.0110时,[x] =0.1001;
当x=-0.0110时,[x] =2 + x = 10.0000 - 0.0110 = 1.1010
当x=0时,
[+0.0000] =0.0000;
[-0.0000] =2 + (-0.0000) = 10.0000 - 0.0000 = 0.0000;
显然[+0] =[-0] =0.0000,即补码中的“零”只有一种表示形式。

补码的符号位扩展:
1、补码的正负小数符号位扩展就是在末尾加0即可,例如:1.1101扩展为1.1101 0000
2、补码的正数符号位扩展在最高位前面加0即可,例如:0101扩展为0000 0101
3、补码的负数符号位扩展在最高位前面加1既可以,例如:1010扩展为1111 1010

反码通常用来作为由原码求补码或者由补码求原码的中间过渡。
反码: 正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各个位取反。 这个方法只是利于计算,但是并不代表反码的真正含义,可以把它忘记

整数反码的定义为:

小数反码的定义为:

因为补码符号位和数值一起编码,所以很难从补码上直接判断出其真值的大小,而用移码就可以很直观的看判断出来。

移码的定义:

利用移码的这一特点,当浮点数的阶码用移码表示时,就能很方便的判断阶码的大小。

移码 相当于补码的符号位取反。

对于补码来说是存在符号位的,使用移码就相当于把补码的负数部分往上移动,使得最小值变为0,而不是负数。

移码更详细的用处以后再研究。

写在最后:

上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
增量编码器一般输出信号是两路正交脉冲信号和一路参考信号,之所以叫增量是因为它的位置信号是通过对脉冲计数累加得到,依靠计数设备的内部记忆来记住位置,并且同每圈输出的参考信号来清除累计误差. 缺点就是断电后,需要重新寻找初始位置. 例如打印机扫... 点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
做而论道
高能答主

2022-11-13 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部

数值,在计算机系统中,一律采用补码表示和存储。

在计算机中,原码和反码,都是不存在的。

你只要掌握“数值与补码”的互换,就可以了。

当码长八位时:

 零和正数,不用变换。

 负数,加上 256,就是补码了。
------------------

原码反码取反加一符号位不变,这些,都是干什么的呢?

老外数学不好,弄不出来转换公式,才需要弄哪些个骚操作。

移码,应用场合有限。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙里波特
2024-07-14 · TA获得超过5251个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:639万
展开全部
二进制的原码、反码、补码、移码
-----------------
二进制的原码、反码、补码、移码?
它们,都可以是十进制。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式