java类型转换与补码表示
数码表示 | 正数 | 负数 |
---|---|---|
原码 | 0000 0001 | 1000 0001 |
反码 | 0000 0001 | 1111 1110 |
补码 | 0000 0001 | 1111 1111 |
正数原码,补码,反码都一样。
负数首位为符号位,反码为除符号位,其它各位逐位取反,补码反码+1.
java中用补码形式表示
byte 8位
short 16位
int 32位
long 64位
short a = 128 0000 0000 1000 0000
byte b = (byte)a
1000 0000(补码) –>反码 1111 1111–> 原码 1000 0000
1000 0000 表示-128
0000 0000 表示 0
为什么采取补码?
整数的补码加负数的补码等于零