百度
360搜索
搜狗搜索

原码符号位,原码、反码、补码,计算机中负数的表示?详细介绍

本文目录一览: 原码、补码、反码之间是怎样转换的?

计算机系统中,并没有原码和反码。
不存在的东西,哪有什么可转换的呢?
在计算机中,使用的是二进制。
八个二进制位,称为一个字节。
计数范围是:0000 0000~1111 1111。
对应十进制:0 ~ 255,共有 256 个数字。
计数周期是:2^8 = 256。
在计算机中,并没有负数。
所以,计算机中这些数字,都属于自然数,即“零和正数”。
但是,实际上,正数,也能当负数用的。
你看 2 位 10 进制数的计算:
   25 - 1 = 24
   25 + 99 = (一百) 24
如果,你不舍弃进位,结果就 124,+99 还是 99。
如果,你舍弃了超出 2 位数的进位,+99 就相当于-1 。
这时的正数,就称为“负数的补数”。
算法是:补数=负数+周期 (10^n),n 是补数的位数。
-------------------------
同理,在计算机中,255 = 1111 1111,就相当于-1。
示例: 0000 0001 = 1
  + 1111 1111 = 255
--------------
  (1) 0000 0000 = 0
如果舍弃了进位 1,这算式,就是:+1 -1 = 0。
如果保留进位,这就是: 1 + 255 = 256。
-------------------------
那么,254 = 1111 1110,就相当于-2。
   。。。
只要你舍弃进位,这些正数,就可以代表负数,参加运算。
这些正数,就称为:负数的补码。
  补码 = 负数 + 周期(2^n),n 是补码的位数。
-------------------------
利用补码,可以把减法,转换成加法运算。
从而,就能简化计算机的硬件。
原码和反码,都没有这种功能。
所以,在计算机中,并没有原码和反码。
符号位原码反码取反加一,这些,都是“鸡肋”。
学习这堆垃圾,花费时间不少,还是弄不懂“补码的意义”。
老外数学不好,也就只能整这些骚操作了。
一、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同。
二、负整数的符号位固定为1,由原码变为补码时,规则如下:
1、原码符号位1不变,整数的每一位二进制数位求反,得到反码。
2、反码符号位1不变,反码数值位最低位加1,得到补码。
方法:
(1)正整数的原码,反码和补码计算。【符号位为0,原码=反码=补码】
(2)负整数的原码,反码和补码计算,先求原码,再求反码,最后求补码。
(3)根据补码求真值,一般使用图中的公式计算,正整数符号为+,负整数符号为-,通常完成补码求真后,可以按步骤1、2简单的逆推一下,看结果是否正确。
扩展资料:补码的表示方法:
模的概念:把一个计量单位称之为模或模数。例如,时钟是以12 进制进行计数循环的,即以12为模。在时钟上,时针加上(正拨)12的整数位或减去(反拨)12的整数位,时针的位置不变。14点钟在舍去模12后,成为(下午)2点钟(14=14-12=2)。
从0点出发逆时针拨10格即减去10小时,也可看成从0点出发顺时针拨2格(加上2小时),即2点(0-10=-10=-10+12=2)。因此,在模12的前提下,-10可映射为+2。由此可见,对于一个模数为12的循环系统来说,加2和减10的效果是一样的。
因此,在以12为模的系统中,凡是减10的运算都可以用加2来代替,这就把减法问题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。10和2对模12而言互为 补数。
同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满8位也就是256个数后会产生溢出,又从头开始计数。产生溢出的量就是计数器的模,显然,8位 二进制数,它的模数为2^8=256。在计算中,两个互补的数称为“补码”。

原码反码补码怎么算

原码反码补码计算方法如下:
一、原码
1:字长为8 , 符号位(首位)为0 表示正数 ; 符号位(首位)为1 表示负数。
2:0000 0001 表示 正1 ; 1000 0001 表示负1。
二、反码
1:正数,反码和原码一样。正1的原码和反码为0000 0001。
2:负数,符号位不变,其他位取反。负1的反码为:1111 1110。
三、补码
1:正数,补码和原码一样。正1的补码为 0000 0001。
2:负数,补码为反码加1,负1的补码为 1111 1111。
3:计算机在计算的时候是用补码在计算。
四、移码
1:补码的符号位取反 正1的移码为 1000 0001 ; 负1的移码为 0111 1111。
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统。
数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,因为数字计算机只能识别和处理由‘0’.‘1’符号串组成的代码。
其运算模式正是二进制。19世纪爱尔兰逻辑学家乔治布尔对逻辑命题的思考过程转化为对符号"0''.''1''的某种代数演算,二进制是逢2进位的进位制。0、1是基本算符。因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。

二进制原码、反码、补码运算及标志位

在计算机系统中,数值,一律采用补码表示和存储。
原码和反码,计算机都是不存在的。
补码,其实,它就是一个“代替负数”的正数。
使用补码之后,计算机中就没有负数了,也就没有减法运算了。
那么,计算机只需要一个加法器,就可以走遍天下了。
为什么使用补码?
  就是为了简化计算机的硬件。
-----------------------
补码(也就是正数),怎么就能代表负数呢?
其实,道理也很简单。根源就是“计数系统的周期性”。
你看 2 位 10 进制数吧:
  25 - 1 = 24
  25 + 99 = (一百) 24
进位是 10^2 = 100,这也是 2 位数的计数周期。
这个进位,显然不在 2 位数之中。
如果你只取 2 位数,+99 和-1 的作用,就是相同的。
就是说,只要舍弃了进位,正数,就可以代替负数。
这个正数,就是“负数的补数”。
求补数的公式: 补数 = 负数 + 周期 (10^n)。
n 是补数的位数。
-----------------------
在三角函数中,大家都知道,周期是 2π。
那么:
  -π/2 和 +3π/2,这两个角度,也是等效的。
负角度,和正角度,要怎么变换呢? 
也是用同样的公式: 正角度 = 负角度 + 周期(2π)。
这种转换公式,在计算机中,也可以使用。
-----------------------
计算机用二进制,计算机大佬就把“补数”改称为“补码”。
本质上,并没有什么变化,也就是为了标新立异吧。
8 位 2 进制是:0000 0000~1111 1111 (十进制 255)。
其计数周期是:2^8 = 256。
此时,-1 就可以用 255 (1111 1111) 代替。
同理,-2 的补码就是 254 (1111 1110)。
。。。
正数,本身就是正数,必须直接参加运算,不许再作任何变换。
所以,正数,根本就没有补数(补码)。
由此,你就可以推出补码定义式:
 当 X >= 0, [ X ]补 = X;     零和正数不用变换。
 当 X < 0,  [ X ]补 = X + 2^n。 n 是补码的位数。
以上就是“求补码的正规做法”,与“原码反码符号位”毫无关系。
-----------------------
用补码计算 5 - 7 = -2。
列竖式如下:
     5  = 0000 0101
 -7 的补码 = 1111 1001
--相加-----------
   得: (1) 1111 1110 = -2 的补码
舍弃进位,只取 8 位,结果就是正确的。
这就说明了,借助于补码,就可以用加法,实现减法运算。
原码和反码,都没有这种功能。
所以,在计算机中,根本就不使用原码和反码。
原码:

阅读更多 >>>  补码的意义,计算机的补码运算在计算机中,补码的作用是什么?

正整数的原码:这个数的二进制,符号位为0;正整数的原码=补码=反码

例1:+66

66的二进制:1000010,所以+66的原码: 0 1000010 =补码:?0 1000010=反码:?0 1000010

负整数的原码:仍是这个数的二进制,符号位为1;负整数的原码、反码、补码计算:先求原码,再求反码,最后求补码;

原码转换为反码:符号位不变,数值位按位取反;

原码转换为补码:符号位不变,数值位按位取反,末尾在+1;

例2:-66

66的二进制:1000010,所以-66的原码:1?1000010 ?补码:1 0111101 反码:1 0111110

二、二进制原码、反码、补码的加减运算及标志位

1.补码加减基本公式

加法:

整数 [A]补+[B]补=[A+B]补 (mod 2n+1)

小数 [A]补+[B]补=[A+B]补 (mod 2)jianfa

减法:

整数 [A-B]补=[A]补+[-B]补 (mod 2n+1)

小数 [A-B]补=[A]补+[-B]补 (mod 2)

2.标志位

CF(Carry Flag) : ? 进为标志位。主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。在8位二进制中,如果计算的结果超过 [0,255] 的范围,就有进位,CF就被置为1,如果结果再 [-128,127] 范围内,就是没有进位CF被置为0。

OF(Overflow Flag) :溢出。用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。在8位二进制中,如果一个运算的结果最终超过 [-128,127] 无论是大于127还是小于-128就被认为是溢出,OF被置为1,如果结果在 [-128,127] 就认为没溢出OF被置为0。

SF(Sign Flag) :符号标志。用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

ZF(Zero Flag) :零标志。用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

PF(Parity Flag) :奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

AF(Auxiliary Carry Flag) :辅助进位标志。在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:(1)、在字操作时,发生低字节向高字节进位或借位时;(2)、在字节操作时,发生低4位向高4位进位或借位时。

整数的原码,反码和补码的表示??

在计算机内,数据是以补码的形式存在的,在计算机中没有负数这个概念,意思就是计算机内部是没有减法的,他的减法是用加法运算实现的,所以要做到这步,补码和反码的符号位必须作为数值的一部分看待,不然计算机怎么知道你是正数还是负数呢?(思考一下)
1、一个正整数,当用原码、反码、补码表示时,符号位都固定为0,用二进制表示的数位值都相同,即三种表示方法完全一样
2、一个负整数,当用原码、反码、补码表示时,符号位都固定为1,用二进制表示的数位值都不相同,即三种表示方法完全一样。此时由原码表示法变成补码表示法的规则如下:
①原码符号位为1不变,整数的每一位二进制数位求反得到反码
②反码符号位为1不变,反码数值为最低位加1,得到补码
计算机中,只用补码表示正负数。
在计算机中,并不存在原码反码。
求补码,也有更简单的方法,也用不着原码反码。
所以,原码反码,都没有任何用处。
----
以八位码长,来说明计算机中的补码:
 数字 0 的补码是:0000 0000。
 数字 1 的补码是:0000 0001。
 数字 2 的补码是:0000 0010。
 。。。依次递增。。。
 数字 127 的补码,就是:0111 1111。
负数,你就依次递减吧。
 数字 0 的补码是:0000 0000。
 数字-1 的补码是:0000 0000-1=1111 1111。(=255)
 数字-2 的补码是:1111 1110。(=254)
 。。。依次递减。。。
 数字-128 的补码,就是:1000 0000。(=128)
----
由此可推出补码的定义:
 零和正数的补码,就是该数字本身。
 负数的补码,就是:256 + 该负数。
----
这就是:计算机中,正负数的存放格式。
其他说法如:原码反码符号位,都是人为瞎编的。
它们和计算机,没有任何关系。
在计算机中,整数,一律采用补码表示。
原码和反码,在计算机中,都是不用的。
没用的东西,你只能写在黑板上、纸面上,你怎么表示都行。
根本就不存在的东西,你想怎么表示就怎么表示。
原码表示:将符号位数码化了的数,其中“+”用0表示,“-”用1表示。
反码表示:正数的反码表示与原码表示一样;负数的反码表示是原码表示的符号位不变,数值位逐位取反。
补码表示:正数的补码表示与原码表示一样;负数的补码表示是原码表示的符号位不变,数值位逐位取反后最低位加1(反码表示最低位加1)。
例:
[+63]原=0111111
[+63]反=0111111
[+63]补=0111111
[-63]原=1111111
[-63]反=1000000
[-63]补=1000001

有符号位的二进制数,在计算原码和补码时那个符号位是始终不变的吗?

对于无符号数而言,没有什么原码、反码、补码的概念,只有绝对值。
对于带符号数,才会有采用什么码型来表示的问题。10000000确实是-128的补码。对于带符号数,最高位是符号位,0表示正数、1表示负数,始终不变。所有的码型换算,都只针对低位的绝对值部分进行。
例如12的原码是00001100,-12的原码是10001100。对其绝对值部分0001100求反加1得1110100,最高位添上符号位1,就是补码11110100。
所以码型转换运算只针对绝对值部分,不针对符号位,符号位始终不变。
因为对于带符号数而言,真正的表示范围是-127~+127,这其中包含了两个0:+0(00000000)和-0(10000000)。而实际应用中,0是没有符号的,所以规定0用+0来表示,那么-0就是一个没有用的二进制码了,而对于低7位而言,模为128,那么128与0就是等值的,此时符号位是负的,于是规定-0就表示-128。这是人为规定。
补码分几种情况:
1、正数与原码相同
2、负数的补码是对
其原码逐位取反
,但符号位除外;然后整个数加1。
对于无符号数而言,没有什么原码、反码、补码的概念,只有绝对值。
对于带符号数,才会有采用什么码型来表示的问题。10000000确实是-128的补码。对于带符号数,最高位是符号位,0表示正数、1表示负数,始终不变。所有的码型换算,都只针对低位的绝对值部分进行。
例如12的原码是00001100,-12的原码是10001100。对其绝对值部分0001100求反加1得1110100,最高位添上符号位1,就是补码11110100。
所以码型转换运算只针对绝对值部分,不针对符号位,符号位始终不变。

原码表示法

原码是一种计算机中,对数字的二进制定点表示方法。
原码表示法,在数值前面增加了一位符号位(即最高位为符号位):
正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
原码表述法的优点是简单直观,缺点是原码表述法不能直接参加运算,可能会出错。

原码表示的数其最高是符号位,而机器数没有符号位,这句话对吗

错了错了,有符号数这种在计算机中使用的数的表示形式称为机器数。根据编码的不同又可将其分为原码,补码,反码
是对的。
符号位,在人看来,是符号位。
计算机进行计算时,也当做数字,来计算。

原码、反码、补码,计算机中负数的表示?

(上面的那位兄弟的说法好像让人有点看不明白)
答案是:B(原码=1.1010 反码=1.0101 补码=反码+1=1.0110)
反码的表示分两种情况,如果是正数,其反码与原码的形式完全一样;如果是负数,则除符号位与原码数的符号保持不变(为“1”)外,尾数各位代码正好为原码对应的相反值。
如:-25,其反码为:1,110 0110
因此,一个负数的反码,只需将原码各位取“反”,便得到其反码表示。
补码的表示,也要分两种情况,如果是正数,它也与其原码完全一样,若是负数,则将原码各位(除符号位)求反,末位(最低位)加1,就得到负数的补码表示。
有下面两个求负数补码的公式:
公式1:负数补码=反码+1
公式2:负数补码=溢出数-(负数相对应的)正数原码
移码(又叫增码)是符号位取反的补码,一般用做浮点数的补码,引入的目的是为了保证浮点数的机器零为全0。
另外,虚机团上产品团购,超级便宜
在计算机系统中,数值,一律采用补码表示和存储。
原码和反码,在计算机中,都是不存在的,也是根本就不用的。
不用讨论这些垃圾。
数值与补码的关系,可见下图:
计算机中的数据都是用补码表示的,正数的原码、反码、补码都一样,很简单,负数用补码表示,就是原码符号位以外的值取反加1就是它的补码了。
原码是数据本身 反码是原码按位取反,补码是按位取反+1
计算机存储的数有有符号数和无符号数,只有当为有符号数是首位为1表示负数
一:对于正数,原码和反码,补码都是一样的,都是正数本身。
对于负数,原码是符号位为1,数值部分取X绝对值的二进制。
反码是符号位为1,其它位是原码取反。
补码是符号位为1,其它位是原码取反,未位加1。
也就是说,负数的补码是其反码未位加1。
移码就是将符号位取反的补码
二:在计算机中,实际上只有加法运算,减法运算也要转换为加法运算,
乘法转换为加法运算,除法转换为减法运算。
三:在计算机中,对任意一个带有符号的二进制,都是按其补码的形式进行运算和存储的。之所以是以补码方式进行处理,而不按原码和反码方式进行处理,是因为在对带有符号位的原码和反码进行运算时,计算机处理起来有问题。
而按补码方式,一方面使符号位能与有效值部分一起参加运算,从而简化运算规则。另一方面使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计
四:补码加、减运算公式
1):补码加法公式
[X+Y]补

[X]补
+
[Y]补
2):补码减法公式
[X-Y]补
=
[X]补-[Y]补
=
[X]补
+
[-Y]补
已知[+Y]补求[-Y]补的规则是全部位(含符号位)按位取反后再加1。
五:由补码求原码
已知一个数的补码,求原码的操作分两种情况:
1.
如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
2.
如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1;其余各位取反,然后再整个数加1。
===========================按你的要求以8位二进制进行计算=======
以8位二进制操作为例,其运算取值范围是-128~127。
那么综上所述,我们可以得到-126-100,可以看成(-126)+(-100),目的是使减法操作变为加法
-126
->
1111
1110
->反
1000
0001
->补
1000
0010
100
->
0110
0100
->
负数求补
1001
1011+1
->
负补
1001
1100
做补码相加得
-126补+(-100)
补->
1000
0010补
+
1001
1100补
->1
0001
1110补
->自然丢弃超出
0001
1110补
由补求原得到
0001
1110补
->
0001
1110原
得到的结果为00011110,如果两个负数相加如果溢出,那么结果一定是正数,由此可知计算结果溢出。

什么是原码

阅读更多 >>>  计算机的补码怎么算,计算机原码反码补码怎么算

原码(true
form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位),该位为0表示正数,该位为1表示负数,其余位表示数值的大小。
原码的优点:简单直观;例如,我们用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011
缺点:原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中00000001+10000001=10000010,换算成十进制为130。显然出错了。
所以原码的符号位不能直接参与运算,必须和其他为分开,这就增加了硬件的开销和复杂性
具体定义还分小数和整数:
①小数原码的定义
[X]
=
X
0≤X
<1
1-
X
-1

X

0
例如:
X=+0.1011
,
[X]原=
01011
X=-0.1011
[X]原=
11011
②整数原码的定义
[X]原
=
X
0≤X
<2n
2n-X

2n

X

0

网站数据信息

"原码符号位,原码、反码、补码,计算机中负数的表示?"浏览人数已经达到21次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:原码符号位,原码、反码、补码,计算机中负数的表示?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!