只有补码能表示-128,只有补码能表示1
补码为什么可以表示-128
补码,是一种用二进制表示有号数的方法,也是一种将数字的正负号变号的方式。
1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
2、补码与原码的转换过程几乎是相同的。
正数的补码,与原码相同。
负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
1000 0000 的反码是 0111 1111,十进制为 127,补码是反码+1,即128 。
原码和补码相加为 0,所以 1000 0000 是 128 的补码,即 -128 。
什么么负128有补码??? 没原码 反码 要补码做什么??? 为什么要这么 规定???
推断-128的原码和补码(用补码=
反码+1)
1.关于原码1000
0000,表示的是-0,还是-128呢?(答案是-128而不是-0)
1.先看看原码的概念吧:正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值
2.0是负数吗?0既不是正数也不是负数,那么它的符号位到底是0还是1呢?(0的符号位为0,不能为1)
3.看看负数补码的公式:负数的补码=10000
0000(模)-数的绝对值
比如:-1
1111
1111
=10000
0000-0000
0001
-2
1111
1110
=10000
0000-0000
0010
现在假设-0为负数,那么
-0的补码应该是10000
0000
-
0(这个0,姑且教0的绝对值吧)=0000
0000
反码:1111
1111(0000
0000
-1=0000
0000
+1111
1111=1111
1111)
原码:1000
0000
现在来推-128
-128的补码:10000
0000
-
1000
0000(+128没有符号位)=1000
0000
反码:1111
1111(1000
0000
-1=1000
0000+1111
1111=1111
1111)(补码-1)
原码:1000
0000(反码取反)
从上面看来,一个原码对应了2个补码
但是仔细分析:原码的概念,负数的符号位为1,但是0不是负数,所以不能用此公式
0也不是正数,但是可以把0定义为原码、反码和补码都一样(即0000
0000)
而且据说可以推断出0的补码只有一个(有兴趣的
可以去推一下,呵呵)
现在原码1000
0000就唯一表示-128了,而不会表示出-0,因为-0不能用这个公式计算
现在,补码1000
0000的原码是1000
0000(已证明),那么原码1000
0000的补码是1000
0000吗?
原码
1000
0000
(-128,进位被舍去)
反码
1111
1111
补码
1000
0000(1111
1111(反码)
+
1=1000
0000,这里实际上真正相加的是1111
1111后面的7位,
第1位是符号位始终不会变,所以,当进到第8位的时候,就表示溢出了,会被舍弃)
2.综上所述:1.-128的补码和原码一样都是1000
0000,
2.0的原码、反码和补码都一样(即0000
0000)
3.如果把-0当做负数,1000
0000就会有歧义(事实上0的补码只有一个0000
0000)
-128怎么表示?
-128 在八位二进制下,并没有原码和反码,只有补码。
而且,在计算机中,也只有补码,并没有原码和反码。
使用补码的意义在于:【把减法转换为加法】。
从而能够简化计算机的硬件。
计算机的位数是固定的,这就为补码的应用,提供了条件。
------
比如,限定,只用两位十进制 0~99,周期就是 100。
那么,减一,就可以用 +99 代替:
24 - 1 = 23
24 + 99 = (1) 23
只是保留两位数,忽略进位,结果就是相同的。
那么,99,就称为-1 的【补数】。
负数的补数的计算公式:100 + 负数。
------
计算机使用二进制,通常是指定为八位。
即,可以使用 0000 0000~1111 1111,共有 256 种。
对应的十进制,就是 0~255。周期是 256。
那么,减一,就可以用 +255 代替。
即:
-1 的补码是 1111 1111 (十进制 255)。
-2 的补码是 1111 1110 (十进制 254)。
-3 的补码是 1111 1101 (十进制 253)。
。。。依次减一,直到-128。。。
-128 的补码,1000 0000 ( = 128)。
。。。共有 128 个负数及其补码。。。
------
求负数补码的公式:【256+该负数】。
正数:直接即可进行运算,不需要任何转换。
------
补码是有用的。
原码反码,则是毫无用处的。
所以,计算机中,并没有原码和反码。
况且,-128 也没有八位的原码和反码!
原码反码,都是什么,不必关心!
-128的补码是多少?
数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制;
在八位二进制下,-128不能用原码或反码表示,反码只能表示0到127,-0到-127;
用补码表示为:10000000
在八位整数里原码的取值范围为-127到+127,反码也是;在八位二进制中就把-0当作最小数-128用,也就是10000000
-0的原码:10000000
-0的反码:11111111
-128的补码:10000000
扩展资料
小数原码
[X] =
X( 0≤X 1 )
1- X (-1 X ≤ 0)
例如: X=+0.1011 , [X]原= 0.1011
X=-0.1011 [X]原= 1.1011
整数原码
[X]原 =
X (0≤X 2(n-1))
2(n-1)-X (- 2(n-1) X ≤ 0)
x为正整数时,[X]原=x;
x为负整数时,[X]原=2的n次方-x;
x为负小数时,[X]原=1-x;
参考资料:百度百科 反码
百度百科 二进制