原码反码补码移码范围,写出8位字长的原码、反码、补码和移码的取值范围?
原码反码补码移码范围,写出8位字长的原码、反码、补码和移码的取值范围?详细介绍
本文目录一览: 原码、反码和补码的转换及表示范围
在计算机系统中,数值,一律采用补码表示和存储。
在计算机中,并没有原码和反码。
所以,原码和反码,与补码的转换,是毫无意义的。
你只要掌握“数值与补码”的转换,就够用了。
下表中,有这个转换的关系式:
数字在机器中存储都是用二进制来存储的,有符号数则有:原码、反码和补码三种表示方式。这三种表示方式里,最高位均代表符号位,1-负数,0-正数。
1.原码
一个数的原码就是该数直接转换成二进制得到的数字,第一位是符号位。
2.反码
正数的反码是自己本身;负数的反码是原码除符号位不动,其他所有位按位取反。
3.补码
正数的补码是自己本身;负数的补码是反码加一得到的(运算时包括符号位)。
故,正数的原反补码都是相等的,负数的原反补码是相互转换得到的。
举例:
计算机存储并计算8-5,因为CPU只有加法器,故要将8-5转换成8+(-5)来计算。
(+8)
8的原码:0000 1000
8的反码:0000 1000
8的补码:0000 1000
(-5)
-5的原码:1000 0101
-5的反码:1111 1010
-5的补码:1111 1011
8 - 5 = 8 + (-5)= 0000 1000 + 1111 1011 = 0000 0011
0000 0011的符号位是0,则表示正数,原反补码都相同,转化为十进制就是3。
所以,数据在计算机中以补码的形式表示和储存,补码的出现也更加便于计算。
二、原码、反码和补码的表示范围
一般计算机字长32位,即用32位二进制表示数:
原码:-[2^(n-1)-1] ~ 2^(n-1) - 1
反码:-[2^(n-1)-1] ~ 2^(n-1) - 1
补码: -2^(n-1) ~ 2^(n-1) - 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|。
相同位数的补码和移码表示范围相同
如果是定点整数:n原码:[-127,127]n反码:[-127,127]n补码:[-128,127]n移码:[-128,127]n因为原码和反码中都有两个0所以少表示一个值n补码与移码一一对应,他俩的范围相同
补码和移码是计算机中表示数值的两种常见方式,它们在表示范围上确实是一样的,但是它们的表示方式和使用上有一些区别。
首先,补码和移码都是用来表示数值的二进制形式。在补码表示法中,正数的补码与其原码相同,而负数的补码是其原码按位取反后加1。而在移码表示法中,正数的移码是其原码的二进制表示,而负数的移码是在其原码的基础上加1。
对于相同的位数,无论是补码还是移码,它们都可以表示的最大数值和最小数值是一致的。例如,对于8位的补码或移码,它们可以表示的最大数值都是2^7-1(即127),而可以表示的最小数值都是-2^7(即-128)。
然而,补码和移码在处理负数时有所不同。在补码系统中,负数的编码比较复杂,需要先对原码进行按位取反,然后加1。而在移码系统中,负数的编码比较简单,只需要在其原码的基础上加1即可。
此外,补码和移码在计算机的硬件设计和软件实现中也有不同的应用。例如,计算机的内部运算一般使用补码来进行,因为补码可以很方便地处理正数和负数。而在一些特殊的场合,例如浮点数的表示或者特定的大数运算中,可能会使用移码来进行。
总的来说,虽然补码和移码在表示范围上是相同的,但是在处理负数和使用上有所不同。
写出8位字长的原码、反码、补码和移码的取值范围?
原码[-127,127]反码[-127,127]补码[-128,127]移码[-128,127]原码中,零分成正零、负零,占了两个数的位置,而补码中0表示唯一,所以原码表示的数字,就少了一个。(原码和反码对应,补码和移码对应)
如果是定点整数:
原码:[-127,127]
反码:[-127,127]
补码:[-128,127]
移码:[-128,127]
因为原码和反码中都有两个0所以少表示一个值
补码与移码一一对应,他俩的范围相同
写出8位字长的原码、反码、补码和移码的取值范围?
原码
[-127,127]
反码
[-127,127]
补码
[-128,128]
移码
[-128,128]
原码中,零分成正零、负零,占了两个数的位置,而补码中0表示唯一,所以原码表示的数字,就少了一个。(原码和反码对应,补码和移码对应)
原码范围:1111
1111b~0111
1111b
对应真值范围:
-111
1111b~+111
1111b,
即
-127d~
+127d
.
反码范围:1000
0000b~0111
1111b
对应真值范围:
-111
1111b~+111
1111b,
即
-127d~
+127d
.
补码范围:1000
0000b~0111
1111b
对应的真值范围:-1000
0000b~+111
1111b,
即
-128d~
+127d
8位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少
8位:正数:原码:00000000-01111111 反码:00000000-01111111 :00000000-01111111正数的话,原码反码补码一样8位:负数:原码:00000000-01111111 反码:10000000-11111111 补码:00000001-(1)00...
原码,反码,补码和移码: 原码:1001101,反码,补码,移码各是多少?
反码:1,110010(除符号位以外,各位取反)
补码:1,110011(除符号位以外,各位取反,末位加一)
移码:0,110011(对补码符号位取反)
注意:
1、首先判断原码的正负,因为对于正数,其原码、补码反码表示形式相同(符号位为0,数值部分与真值相同)
2、对于反码和补码,要区别:已知[x补],求[-x补]的题目(连同符号位各位取反,末位加一)
扩展资料:原码、反码、补码、移码的运算方法
运算过程:原码->反码->补码->移码原码 :二进制(开头第一个表示符号0正1负)反码 :在原码的基础上,符号位不动,其他位取反 ---注意,任何正数的源码=反码=补码,而负数都是通过补码表示的。
补码 :在反码的基础上,运算+1 ---注意,任何正数的源码=反码=补码,而负数都是通过补码表示的。
公式:两数补码的和==两数和的补码。移码 :在补码的基础上,符号位取反
例如:
例子3 10+(-10)=0 (使用补码)10(十进制) --- 00001010(源码)----同源码(反码)----同源码(补码)-10(十进制) --- 10001010(源码)----11110101(反码)----11110110(补码)00001010+ 10的源码----注意正数用补码(值等同于源码)11110110 -10的补码----注意负数用补码---------00000000 得到了0的补码
二进制的原码、反码、补码、移码
数值,在计算机系统中,一律采用补码表示和存储。
在计算机中,原码和反码,都是不存在的。
你只要掌握“数值与补码”的互换,就可以了。
当码长八位时:
零和正数,不用变换。
负数,加上 256,就是补码了。------------------
原码反码取反加一符号位不变,这些,都是干什么的呢?
老外数学不好,弄不出来转换公式,才需要弄哪些个骚操作。
移码,应用场合有限。
之前了解一些原码、反码、补码,但是一直有疑问,为什么会有原码、反码、补码?所以决定研究一下。
计算机中参与运算的数有两大类:无符号数和有符号数。此篇主要看一下有符号数。在了解原码、反码、补码前需要先了解机器数和真值。
对于有符号数而言,使用“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,而不是负数。
移码更详细的用处以后再研究。
写在最后:
8位二进制原码 补码 反码的表示范围各是多少 怎么算的?
8位二进制原码的表示范围:-127~+127
8位二进制反码的表示范围:-127~+127
8位二进制补码的表示范围:-128~+127
n位二进制原码和n位二进制反码:-2^(n-1)-1~+2^(n-1)-1;n位二进制补码:-2^(n-1)~+2^(n-1)-1。
为什么规定范围-128到127?而不是规定其他范围?因为8位数,除去一位符号位,每一位只有0或1,那就有128种情况,每种情况按权值计算,就是0到127,加上正负号,就是256个数,但是+0和-0取反加一后都是00000000,所以就是255个数,但是这样就会剩下一个10000000什么都不表示,但是10000000如果看作无符号数就是128,而且第一位是1,所以用来表示-128。知道了吗?不要动不动就说规定的,任何事存在就有它的道理。
8位二进制原码的表示范围:-127~+127
8位二进制反码的表示范围:-127~+127
8位二进制补码的表示范围:-128~+127
n位二进制原码和n位二进制反码:-2^(n-1)-1~+2^(n-1)-1;n位二进制补码:-2^(n-1)~+2^(n-1)-1。
8位二进制原码的表示范围:-127~+127
8位二进制反码的表示范围:-127~+127
8位二进制补码的表示范围:-128~+127
http://wenku.baidu.com/view/750cb5c458f5f61fb73666ec.html
这些范围,不是算的,是规定的。
8位二进制原码的表示范围:-127~+127。
8位二进制反码的表示范围:-127~+127。
8位二进制补码的表示范围:-128~+127。
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。在计算机内,定点数有3种表示法:原码、反码和补码。
原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数和小数区别,整数的符号位与数值位之间用“,”隔开,小数的符号位与数值位之间用“.”隔开。