128 与 -128 的原码,反码,补码是多少。求大神解
128没有原码、反码和补码,但补码是-128到+127,所以 -128的补码应该是10000000,-128没有反码。-128的原码=1000 000。
其他的都溢出了,在8位整数里原码的取值范围为-127到+127 反码也是。
扩展资料:
计算机中所有的数均用0,1编码表示,数字的正负号也不例外,如果一个机器数字长是n位的话,约定最左边一位用作符号位,其余n-1位用于表示数值。
在符号位上用"0"表示正数;用"1"表示负数。数值位表示真值的绝对值。凡不足n-1位的,小数在最低位右边加零;整数则在最高位左边加零以补足n-1位。这种计算机的编码形式叫做原码。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
参考资料:
八位的原码,可表示的范围是:-127 ~ +127。
八位的反码,可表示的范围是:-127 ~ +127。
八位的补码,可表示的范围是:-128 ~ +127。
即,-128 只有补码,并没有原码和反码。
对于-128,取反加一、减一取反,就都不能用了。
实际上,取反加一,并非是补码的定义式。
补码,有自己的定义式,和原码反码都没有关系。
当 X >= 0, [ X ]补 = X; 零和正数不用变换。
当 X < 0, [ X ]补 = X + 2^n。 n 是补码的位数。
那么,[-128]补 = -128 + 2^8 = 1000 0000 (二进制)。
-128 的八位原码和反码,就别想了。