本人是Java新手一枚,以下是一个byte类型的数据强制转换的Demo源码,有个问题想请教大神
130在内存中是以补码存在的,截取过程是从源码截取后8位,还是转成补码之后再截取后8位?
class VariableDemo3
{
public static void main(String[] args)
{
byte b = 126;
System.out.println(b);
byte b2 = (byte)130;
System.out.println(b2);//-126
byte b3 = (byte)300;
System.out.println(b3);//44
}
}
/*
第一个:
byte b2 = (byte)130;
数据:130默认是int类型的十进制数据。
第一步:十进制的130转换成二进制数据。
128 64 32 16 8 4 2 1
1 0 0 0 0 0 1 0
第二步:130在内存中的表示形式,你做了截取
00000000 00000000 00000000 10000010
截取后的结果是:
10000010
第三步:二进制数据是10000010
通过观察,我们发现这是一个负数。
原码:1 0000010
反码:1 1111101
补码:1 1111110
最终的结果是:
1 1111110
第二个:
byte b3 = (byte)300;
二进制:
00000000 00000000 00000001 00101100
截取后:
00101100
*/ |
|