找个例子说明问题。
byte的取值范围是-128到127
byte字节是8bit的。
byte取值范围就是10000000到011111111
128 =1000 0000,8位机器
[-128]原码 = 1000 0000	发生了溢出,最高位表示符号位:0为正数,1为负数
[-128]反码 = 1111 1111	除符号位外,各位取反
[-128]补码 = 1000 0000	反码的末位加1,不能影响符号位
原码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。
例如,X1= +1010110
X2= 一1001010
其原码记作:
[X1]原=[+1010110]原=01010110
[X2]原=[-1001010]原=11001010
原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:
最大值为0.1111111,其真值约为(0.99)10
最小值为1.1111111,其真值约为(一0.99)10
当用8位二进制来表示整数原码时,其表示范围:
最大值为01111111,其真值为(127)10
最小值为11111111,其真值为(-127)10
在原码表示法中,对0有两种表示形式:
[+0]原=00000000
[-0]原=10000000
补码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。
例如,[X1]=+1010110
[X2]= 一1001010
[X1]原=01010110
[X1]补=01010110
即[X1]原=[X1]补=01010110
[X2]原= 11001010
[X2]补=10110101+1=10110110
补码表示