Ⅰ 负数的补码怎么变回原码
只需对其各位取反加一即可得到原码。
从数学角度回答,假定在32位机器上。
设某负数X,则X+X(反)= 0xFFFFFFFF。
所以X+X(反)+1 = 0,可以得出 0 - X = X(反)+ 1。
这里 0 - X即定义为负数X的补码,这样,计算机在进行X-Y运算时实际可用X+Y(补)代替,硬件角度只需实现加法电路即可。
同样的道理,0-X(补)=X(补)(反)+1 = X,即已知负数补码只需对其各位取反加一即可得到原码。
补码的意义
补码“模”概念的引入、负数补码的实质、以及补码和真值之间的关系所揭示的补码符号位所具有的数学特征,无不体现了补码在计算机中表示数值型数据的优势,和原码、反码等相比可表现在如下方面:
1、解决了符号的表示的问题。
2、可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计。
3、在计算机中,利用电子器件的特点实现补码和真值、原码之间的相互转换,非常容易。
4、补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计乘法器除法器等运算器件提供了极大的方便。
总之,补码概念的引入和当时运算器设计的背景不无关系,从设计者角度,既要考虑表示的数的类型(小数、整数、实数和复数)、数值范围和精确度,又要考虑数据存储和处理所需要的硬件代价。因此,使用补码来表示机器数并得到广泛的应用,也就不难理解了。
Ⅱ 负数的真值是多少
负数的真值是这个数的绝对值的二进制,这里指的是负整数。
真值:因为负数的机器数,最高位为符号位,所以机器数的形式值就不等于真正的数值,不像正数那么“一目了然”。例如10000011,如果是负数,则bit7为1,其真正十进制数值为-125,而不是形式值131(当然如果不是负数,那么确实就是131);所以,为了区别起见,将带符号位的机器数对应的真正数值称为机器数的真值;
Ⅲ 负数原码11101001转换为十进制为多少要过程
首先原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
由于负数所以第一位符号位为1然后从右开始计算1*2^0+1*2^3+1*2^5+1*2^6=1+8+32+64=9+96=105
所以最终得出结果为—105
Ⅳ 负数的原码怎么计算
Ⅳ 补码和真值两者怎么换算
知道补码,求真值,方法步骤,是非常简单的。
你既不用求“反码原码”,也不用想着“符号位不变”。
“取反加一”或“减一取反”,都是不需要的。
你就直接进行【数 制 转 换】即可。
比如:
有一个八位的补码,是 1000 1110。
首位 1,既代表负数,也代表-128。
其余都是正数:8 + 4 + 2 = 14。
求总和,故其真值就是:-114。
----------
另一个八位的补码,是 0000 1110。
其真值就是:8 + 4 + 2 = +14。
Ⅵ 负数的原码、补码。请求。
原码:最高位作为符号位,0为正,1为负。
反码:正数的反码是原码,负数的反码是原码的符号位不变,数字位按位取反。
补码:正数的补码是原码,负数的补码是其反码加1。
如:
11011011是负数的原码,
10100100是这个负数的反码,
10100101是它的补码。
Ⅶ 二进制正,负数的原码,反码,补码三者之间是什么关系
2、符号位的表示:最常用的表示方法有原码、反码和补码。
(1)原码表示法:一个机器数x由符号位和有效数值两部分组成,设符号位为x0,x真值的绝对值|x|=x1x2x3...xn,则x的机器数原码可表示为:
[x]原=
,当x>=0时,x0=0,当x<0时,x0=1。
例如:已知:x1=-1011B,x2=
+1001B,则x1,x2有原码分别是
[x1]
原=11011B,[x2]原=01001B
规律:正数的原码是它本身,负数的原码是取绝对值后,在最高位(左端)补“1”。
(2)反码表示法:一个负数的原码符号位不变,其余各位按位取反就是机器数的反码表示法。正数的反码与原码相同。
按位取反的意思是该位上是1的,就变成0,该位上是0的就变成1。即1=0,0=1
(3)补码表示法:
首先分析两个十进制数的运算:78-38=41,79+62=141
如果使用两位数的运算器,做79+62时,多余的100因为超出了运算器两位数的范围而自动丢弃,这样在做78-38的减法时,用79+62的加法同样可以得到正确结果。
模是批一个计量系统的测量范围,其大小以计量进位制的基数为底数,位数为指数的幂。如两位十进制数的测量范围是1——9,溢出量是100,模就是102=100,上述运算称为模运算,可以写作:
79+(-38)=79+62
(mod
100)
进一步写为
-38=62,此时就说
–38的补法(对模100而言)是62。计算机是一种有限字长的数字系统,因此它的运算都是有模运算,超出模的运算结果都将溢出。n位二进制的模是2n,
一个数的补码记作[x]补,设模是M,x是真值,则补码的定义如下:
例:设字长n=8位,x=-1011011B,求[x]补。
解:因为
n=8,所以模
M=28=100000000B,x<0,所以
[x]补=M+x=100000000B-1011011B=10100101B
注意:这个x的补码的最高位是“1”,表明它是一个负数。对于二进制数还有一种更加简单的方法由原码求出补码:
(1)正数的补码表示与原码相同;
(2)负数的补码是将原码符号位保持“1”之后,其余各位按位取反,末位再加1便得到补码,即取其原码的反码再加“1”:[x]补=[x]反+1。
下表列出
的8位二进制原码,反码和补码并将补码用十六进制表示。
真值
原码(B)
反码(B)
补码(B)
补码(H)
+127
0
111
1111
0
111
1111
0
111
1111
7F
+39
0
010
0111
0
010
0111
0
010
0111
27
+0
0
000
0000
0
000
0000
0
000
0000
00
-0
1
000
0000
1
111
1111
0
000
0000
00
-39
1
010
0111
1
101
1000
1
101
1001
D9
-127
1
111
1111
1
000
0000
1
000
0001
81
-128
无法表示
无法表示
1
000
0000
80
从上可看出,真值+0和-0的补码表示是一致的,但在原码和反码表示中具有不同形式。8位补码机器数可以表示-128,但不存在+128的补码与之对应,由此可知,8位二进制补码能表示数的范围是-128——+127。还要注意,不存在-128的8位原码和反码形式。
Ⅷ 怎么求一个负数的原码和补码
正数,本身就是补码。
负数,就用它的正数,减一取反,即可得到补码。
如:+9 的二进制是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗!
简不简单?意不意外?
原码反码符号位,讨论这些垃圾干嘛?
这些垃圾,只是那些专家用来骗吃骗喝的!
Ⅸ 原码,补码,怎样转换为真值,求详细解答。
原码即真值,其中最高位为符号位,其余均为数值位。
正数、零的原码、反码、补码均相同。所以真正的求补的运算只对负数进行,且:补码的补码即是原码。
对负数求补的过程是,保持符号位不变,对数值位取反后再加一。