原码、反码、补码

 我来答
机器1718
2022-06-14 · TA获得超过6821个赞
知道小有建树答主
回答量:2805
采纳率:99%
帮助的人:159万
展开全部
在计算机中表示的带符号的二进制数称为“机器数”(用形式上的码表示真实的数)。机器数有3种表示方式:原码、反码和补码。

机器数的最高位为符号位,0表示正数,1表示负数,数值跟随其后。

原码是与真值最接近的一种表示形式。

原码的定义:

[X]原 ={ X                      (0 ≦ X <1)

                1 - X = 1 + |X|  (-1 < X ≦ 0)}

即[X]原 = 符号位 + |X|

例:X = -0.1011,[X]原 = 1-X=1.1011

数值零的真值有 +0 和 -0 两种表示形式,其原码也有两种表示形式:[+0]原 = 00000,[-0]原 = 10000

当运算结果不超出机器能表示的范围时,运算结果仍以原码表示。

机器数的最高位为符号位,0表示正数,1表示负数。其余取反。

反码零有两种表示形式:

[+0]反=0.0000      [-0]反=1.1111

机器数的最高位为符号位,0表示正数,1表示负数。

串行求补:从末位开始,连续的0不变,第一个1也不变,其余取反。

补码的定义:(反码+1)

[X]补 = { X                        (0 ≦ X < 1)

              2 + X = 2 - |X|    (-1 ≦ X < 0)}

即 [X]补 = 2 · 符号位 + X    mod2

此处,2为十进制数,即二进制的10。

例:X = -0.1011,则[X]补 = 2+X=1.0101

数值零的补码表示形式是唯一的:[+0]补 = [-0]补 = 0.0000。可根据补码定义计算:

当X=-0.0000,[X]补=2+X=10.0000+0.0000=10.0000=0.0000    mod 2

例:X = +0.1011        Y = -0.1011

由此可见,正数的原码、反码、补码的表示形式相同(三码合一),而负数则各不相同。
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
做而论道
高能答主

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

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

原码和反码,根本就用不上。在计算机中,也都是不存在的。

只要掌握了“数值与补码”的互换,就万事大吉了。

数值,与其八位的补码,对照如下:

互相换算的公式,小学生都能看出来。

你也能吧。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙里波特
2024-08-07 · TA获得超过5248个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:630万
展开全部
原码反码是干什么的? 为什么存在? 意义是什么?
--任何书上都没有指明。
--其原因就是:它们都没有存在的理由,也都没有存在的必要。
--计算机中,都是使用补码,根本就不用原码和反码。
--原码反码,只是存在于课本上、黑板上,学生毕业后,就再也见不到它们了。
--因为在实际工作中,根本就用不着它们。
所谓的补码,其来源,并非是原码反码取反加一。
补码,只是源于小学的知识点。
--你看十进制,两位数:0 ~ 99。
--那么有:27 + 99 = (一百)26,
--也可以:27-1 = 26。
如果你忽略进位,依旧保持两位数,这两种算法的功能,就是相同的。
即,舍弃了进位:
--正数,就能当负数使用。
--加法,也就能取代减法运算。
上过小学的人,都能懂这个。
在计算机中舍弃进位,负数就没有了,大家都是正数。
--因此,减法运算,也就不存在了。
--减法器,当然就没有任何用处了。
--计算机只用一个加法器,便可横行天下!
--这就是补码的来历和存在的意义。
在两位十进制时,舍弃进位,就是减去一百。
那么,加 99,再减 100,当然就是“-1”了。
对于八位二进制,进位就是 2^8=256。
那么,加上 255 (1111 1111),再舍弃进位,也就是“-1 ”。
同理,+254 (1111 1110),再舍弃进位,就是“-2 ”了。
。。。 。。。
最后,+128 (1000 0000),再舍弃进位,这就是“-128”。
这不过就是一个小学的知识点,计算机专家却故意不说明白。
偏要故弄玄虚,编造出来一个词:补码!
也可能,老外根本就不懂什么是进位、什么是舍弃进位。
老外的算术水平太洼了。
谁要是跟老外学算术,立刻、马上、直接就掉坑里去了。
二进制数,也是数。
舍弃进位后,正数就能当负数使用。
不论什么进制,都是这样的。
二进制数,也并没有什么特殊的。
此时的这个正数,仍然是还是数,并不能说它是“什么什么码”。
难道,+99,是原码吗? 是反码吗? 是补码吗?
二进制数中,根本就没有什么符号位,更不要说符号位也参加运算。
所谓的“机器数符号位原码反码取反加一符号位不变模符号位也参加运算”,都是不存在的谎言。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式