一文搞懂原码、反码、补码

作者&投稿:水鹏 (若有异议请与网页底部的电邮联系)
原码,反码,补码,是什么?~

需要声明的是,本文涉及到的数字及运算均基于 8位bit 下的值。

最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。

如:

127的原码为0111 1111
-127的原码为1111 1111

正数的反码与原码一致;

负数的反码是对原码按位取反,只是 最高位(符号位)不变

如:

127的反码为0111 1111
-127的反码为1000 0000

正数的补码与原码一致;

负数的补码是该数的 反码加1

如:

127的补码为0111 1111
-127的补码为1000 0001

总结一下就是:

下面就来探讨一下,为啥要用补码来表示数字。

如果计算机内部采用原码来表示数,那么在进行加法和减法运算的时候,需要转化为两个绝对值的加法和减法运算;

计算机既要实现加法器,又要实现减法器,代价有点大,那么可不可以只用一种类型的运算器来实现加和减的远算呢?

很容易想到的就是 化减为加 ,举一个生活中的例子来说明这个问题:

时钟一圈是360度,当然也存在365度,但其实它和5度是一样的;

相同的道理,-30度表示逆时针旋转30度,其与顺时针旋转330度是一样的;

这里数字360表示时钟的一圈,在计算机里类似的概念叫 ,它可以实现 化减为加 ,本质上是将 溢出的部分舍去 而不改变结果。

易得,单字节(8位)运算的模为256=2^8。

在没有符号位的情况下,127+2=129,即:

这时,我们将最高位作为符号位,计算机数字均以补码来表示,则1000 0001的原码为减1后按位取反得1111 1111,也就是-127。

也就是说,计算机里的129即表示-127,相当于模256为一圈,顺时针的129则和逆时针127即-127是一样的。

故可以得到以下结论:

负数的补码为 模减去该数的绝对值

如-5的补码为:

-5=256-5=251=1111 1011(二进制)

同样的,临界值-128也可以表示出来:

-128=256-128=128=1000 0000(二进制)

但是正128就会溢出了,故单字节(8位)表示的数字范围为-128--127。

最后,我们来看一下,补码是如何通过模的 溢出舍弃 操作来完成 化减为加 的!

16-5=16+(-5)=11

1 0000 1011将溢出位舍去,得0000 1011(二进制)=11。

好的,本文分享就到这里,希望能够帮助到大家。



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

必须掌握的是“数值与补码”的转换。

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

所以,它们,都没有任何用处,懂不懂,并没有什么关系。

----------------------

搞懂补码,并不难。补码的来源,可以说是日常所见。

之所以难懂,就是被哪些数学不好的老外,给误导了。

你看 2 位 10 进制(0~99),计数周期是:10^2 = 100。

算式:

  25 - 1 = 24

  25 + 99 = (一百) 24

如果你只取 2 位数,舍弃进位 10^2 = 100,

+99 和-1 就是等效的。

加法和减法运算,也是等效的。

换算公式: 正数 = 负数 + 周期。

得出的正数,就是“负数的补数”。

----------------------

计算机,每次计算的位数,是固定的。

八位机就是八位,16 位机就是 16。。。

位数,限定了之后,负数就可以用补码(正数)代替。减法运算,也就消失了。

计算机,仅用一个加法器,就能走遍天下。

----------------------

八位的二进制是:0000 0000~1111 1111(十进制255)。

        计数周期是 2^8 = 256。

-1 的补码就是:256-1 = 255(二进制 1111 1111)。

-2 的补码就是:256-2 = 254(二进制 1111 1110)。

。。。

计算公式:

  负数的补码 = 该负数 + 周期。

  零和正数,不存在补码,直接就可以参加计算。

----------------------

补码,就是这么计算出来的。

补码,和原码反码,毫无关系。

计算机中,也并没有原码反码,因此,就不必讨论它们。

原码反码取反加一符号位不变。。。

脑子不好用的老外,当然就要这么做了。




什么是二进制原码,反码,补码?
负整数的原码:仍是这个数的二进制,符号位为1;负整数的原码、反码、补码计算:先求原码,再求反码,最后求补码;原码转换为反码:符号位不变,数值位按位取反;原码转换为补码:符号位不变,数值位按位取反,末尾在+1;例2:-66 66的二进制:1000010,所以-66的原码:1 1000010  ...

原码,反码,补码,是什么?
带符号数,有三种表示方法,即:原码、反码和补码。但是,在计算机系统中,数值一律用【补码】来表示和存储。所以,在计算机系统中,原码和反码,都是不存在的。使用补码的意义:可以把减法或负数,转换为加法运算。因此,就能简化计算机的硬件。=== 补码的概念,来自于:补数。比如钟表,时针转一圈...

原码,反码,补码的定义是什么. 最好能举例说明呵呵!
原码:在数值前直接加一符号位的表示法.对于8位二进制来说:[+7]原= 0 0000111 [-7]原= 1 0000111 反码:正数的反码与原码相同.负数的反码,符号位为“1”,数值部分按位取反.[+7]反= 0 0000111 [-7]反= 1 1111000 补码:正数的补码和原码相同.负数的补码则是符号位为“1”,数值部分按...

反码,补码,原码的区别是什么?
[1111 1111 , 0111 1111]即[-127 , 127]原码是人脑最容易理解和计算的表示方式.2,符号位的机器数对应的真正数值称为机器数的真值。例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 1,反码 反码的表示方法是:正数的反码是其本身 负数的反码是在其原码的基础...

计算机原码,反码和补码是怎么计算的?
计算机原码反码补码计算方法:1、原码 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:[+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]即[-127 , 127...

何为原码,何为反码,何为补码。,何为补码。。
那么,没有必要学“原码反码取反加一符号位不变”了。况且,原码和反码比补码,还少了一个数,取反加一,也无法使用。当然,那些数学不好的老外,也只能使用这些“隔路”的花样。--- 算式 5 - 7 =-2,计算机用八位补码计算如下:5 = 0000 0101 [-7]补码 = 1111 1001 --相加--- ...

原码反码补码的意义
所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 1、原码、反码和补码的表示方...

正数的原码,补码,反码是什么?
1、正数的反码与其原码相同;2、负数的反码是对正数逐位取反,符号位保持为1;(二)对于二进制原码10010求反码:((10010)原)反=对正数(00010)原含符号位取反= 反码11101 (10010,1为符号码,故为负)(11101) 二进制= -2 十进制 (三)对于八进制:举例 某linux平台设置了默认的目录权限为...

原码和反码,补码是什么关系?
但是在不需要考虑数的正负时,就不需要用一位来表示符号位,n位机器数全部用来表示是数值,这时表示数的范围就是0~2^n-1,n=8时这个范围就是0~255没有符号位的数,称为无符号数。代码中的小数点是在书写时为了清晰起见加上去的,在机器中并不出现。相关概念 反码:原码最大的问题就在于一个数...

原码,反码,补码怎么解释
完全不用绕到“原码反码符号位”那么远。可以用十进制来计算。如果需要二进制,你就再转换一下。用这个方法,不涉及原码反码符号位,就少了不少麻烦事。--- 为什么负数用补码存储?利用补码,可以把减法运算,转换成加法。(所以,在计算机中,有一个加法器,就够用了。)例如,6-2 = 4,在计算...

珠山区15176737681: 原码,反码和补码表示的规则分别是什么 -
薄可振源: 数在计算机中是以二进制形式表示的. 数分为有符号数和无符号数. 原码、反码、补码都是有符号定点数的表示方法. 一个有符号定点数的最高位为符号位,0是正,1是副. 以下都以8位整数为例, 原码就是这个数本身的二进制形式. 例如 ...

珠山区15176737681: 解释一下反码,补码 -
薄可振源: 2)反码: 正数:正数的反码与原码相同. 负数:负数的反码,符号位为“1”,数值部分按位取反. 浮点表示方法 例如: 符号位 数值位 [+7]反= 0 0000111 B [-7]反= 1 1111000 B 注意:a. 数0的反码也有两种形式,即 [+0]反=00000000B [- 0]...

珠山区15176737681: 原码,反码,补码的定义是什么.最好能举例说明呵呵! -
薄可振源:[答案] 原码: 在数值前直接加一符号位的表示法.对于8位二进制来说: [+7]原= 0 0000111 [-7]原= 1 0000111 反码: 正数的反码与原码相同. 负数的反码,符号位为“1”,数值部分按位取反. [+7]反= 0 0000111 [-7]反= 1 1111000 补码: 正数的补码和原码...

珠山区15176737681: 什么是原码、反码、补码? -
薄可振源: 1、原码的定义 原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示.设有一数为x,则原码表示可记作[x]原. ①小数原码的定义 [X]原 = X 0≤X

珠山区15176737681: 原码,反码,补码怎么解释 -
薄可振源: 将10进制数转换成2进制数,称为原码,原码各位取反称为反码,反码最低位+1,称为补码. 这些主要是为了表示负数,才有了这些概念.

珠山区15176737681: 原码、反码、补码之间的关系 -
薄可振源: 给你举个例子吧:二进制,原码(101011),反码(010100),反码是相对与原码而言的,逐位取反;十进制,原码6,补码4,补码和进制相关,6+4=10,所以说4和6互为补码

珠山区15176737681: 什么是原码,补码和反码 -
薄可振源: 原码就是题目给你的010011001这种二进制码,反码就是把原码的0变1,1变0,如101100110,补码就是反码加1,就是101100111我觉得很通俗了

珠山区15176737681: 原码,反码,补码是什么? -
薄可振源: 正数的原码,补码,反码相同,先求原码,因为正数的原码就是他的真值. 负数的原码是在正数的原码基础上,最高位置1,即符号位.然后再求反码:符号位1不变,后面的所有位取反,然后再求补码:在反码的基础上,末尾加1 .注意负数的反码,补码除了符号位外也不是该负数的真值,而是原码的除了最高位后面的数是真值的绝对值,在求真值时,要都化成原码才行.

珠山区15176737681: 原码.反码.补码的定义是什么? -
薄可振源: 计算机中的存储系统都是用2进制储存的,对我们输入的每一个信息它都会自动转变成二进制的形式,而二进制在存储的时候就会用到原码,反码和补码 例如:输入25 原码就是:0000000000011001 反码: 1111111111100110 补码: ...

珠山区15176737681: 什么是反码 原码 补码?
薄可振源: 用二进制数表示数值的方法: 原码表示法是机器数的一种简单的表示法.最高位是符号位,其符号位用0表示正号,用:1表示负号,数值一般用二进制形式表示.例 +6的 8位二进制原码=00000110;-6的 8位二进制原码=10000110 反码可由原码...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网