题目:经过强制类型转换以后,变量a, b的值分别为( )short a = 128; byte b = (byte) a
1、java中用补码形式表示
2、第一位正负位,1表示负,0表示正
3、原码:一个数的二进制表示
3的原码:0000 0011 -3的原码:1000 0011
4、反码:正数原码本身。负数原码按位取反(符号位不变)
3的反码:0000 0011 -3的反码:1111 1100
5、补码:正数原码本身。负数反码加1
3的补码:0000 0011 -3的补码:1111 1101
已知负数的补码,求负数:
补码-1=反码,反码按位取反
已知负数,求负数的补码
负数原码除了符号位,按位取反
byte在内存中占一个字节,8位,范围是[-128,127]
short在内存中占四个字节,32位
强制转换时,byte是8位,截取a的后8位,1000 0000,此时最高位是1说明是负数(第一位正负位,1表示负,0表示正)
补码 :1000 0000
反码: 1000 0000 -1 = 0111 1111
原码: 1000 0000 -128