⑴ 0的原码,补码,反码是什么
0在计算机种分+0与-0,它们的原码,补码,反码如下:
1、[+0]原码=0000 0000, [-0]原码=1000 0000;
2、[+0]反码=0000 0000, [-0]反码=1111 1111;
3、[+0]补码=0000 0000, [-0]补码=0000 0000。
在这里你会发现,+0和-0的补码是一样的,即0的补码只有一种表示。
在计算机内,符号数有3种表示法:原码、反码和补码。
(1)00h的源码反码补码移码扩展阅读:
原码、补码、反码的转换规则:
1、原码的求法:
(1)对于正数,转化为二进制数,在最前面添加一符号位(这是规定的),用1表示负数,0表示正数,如:0000 0000是一个字节,其中左边第一个0,0为符号位,表示是正数,其它七位表示二进制的值。
(2)正数的原码、反码、补码是同一个数。
(3)对于负数,转化为二进制数,前面符号位为1,1表示是负数。
2、计算原码只要在转化的二进制数前面加上相应的符号位就行了。
3、反码的求法:
对于负数,将原码各位取反,符号位不变。
4、补码的求法:
对于负数,将反码加上二进制的1即可,也就是反码在最后一位上加上1就是补码了。
⑵ 原码,补码,反码都是什么意思,怎么算啊
把十进制数转换成二进制数后,二进制数就是原码
例如:十进制:2 -----> 二进制:10
“二进制:10“就是原码
为了凑够8位,在二进制10前面加6个0,变成00000010
2的原码:00000010
2的反码:00000010
2的补码:00000010
也就是,正数的原码,反码,补码都相同
下面是负数的原码、反码、和补码:
3的原码:00000011 -3的原码:10000011 也就是最左边的那个数表示正负,0代表正,1代表负,它也叫符号位
-3的原码:10000011
-3的反码:11111100 负数的反码是对其原码按位取反,符号位不变
-3的补码:11111101 负数的补码是在其反码的末位加1
计算机用补码计算
⑶ 计算机理论:原码、反码、补码与移码公式记忆方法(个人总结)
给定一个数,其真值为x,机器字长信余为n,则针对带符号数:
针对机器字长为n的带符号数x,原码与反码取值范围一样,以下整数均为纯整数,小数均为纯小数:
直接看公式可能不容易记住,所以最好是记实例。针对机器字长为8位(即n=8)的带符号纯整数x,其纯整数取值范围是-127 ~ 127,即127= 128-1=2 7 -1=2 (8-1) - 1=2 (n-1) - 1。纯小数的取值范滑岁滚围是-1 ~ 1,因为原码与反码有2个0(即-0、+0)所以正负小数都可以等于0
补码的取值范围:
同样记实例。针对机器字长为8位(即n=8)的带符号纯整数x,其取值范围是-128~127,即-128 = -2 7 -(2 8-1 ) = -(2 n-1 ),127= 128-1=2 7 -1=2 (8-1) - 1=2 (n-1) - 1。纯小数的取值范围是-1 ~ 1,但补码只有1个0(即+0),所以负小数小于0,可以等于-1。
移码的取值范围:
移码公式不分正负数。
针对正数(正整数与正小数),原码、反码与补码的表示是一样的。
针对机器字长为n的负数(负整数与负小数):
记忆方法:(机器字长n=8)
1、对于原码负数,符号位取1,即1000 0000。若1000 0000为整数,其值为2 7 =2 n-1 ,若为小数,其值为2 0 ,最后加上|x|即可。
2、对于反码负数,符合位取1,数值位取反,即1111 1111,若1111 1111为整数,其值为255=2 n -1,若为小数,其值为2 1 -2 -7 =2-2 -(n-1) ,最后加上x即可。
3、对于补码负数,符合位取1,数值位雀哗取反,再加1,即1 0000 0000,若1 0000 0000为整数,其值为256=2 n ,若为小数,其值为2,最后加上x即可。
4、对于移码,其公式与原码负整数和负小数公式相似,但移码取x,原码取|x|。
⑷ 原码、反码、补码、移码
都是指代 二进制 数
一、原码
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”表示负,这种把符号“数字化”的数称为 机器数 ,也就是一个数在计算机中的二进制表示。
例如:+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,而不是负数。
移码更详细的用处以后再研究。
写在最后:
⑹ 给下列16进制数,若将此数分别视为无符号数,源码,补码,反码和移码表示,写出对应的十进制整数
50H = 0101 0000B
50H 当做无符号数字,代表:80。
50H 当做原码,代表:80。
50H 当做反码,代表:80。
50H 当做补码,代表:80。
50H 当做移码,代表:-48。
FEH = 1111 1110B
FEH 当做无符号数字,代表:254。
FEH 当做原码,代表:-126。
FEH 当做反码,代表:-1。
FEH 当做补码,代表:-2。
FEH 当做移码,代表:+126。