代码:
int a = 201;
byte b = (byte)a;
System.out.println(b);
System.out.println(b & 0xff);
输出:
-55
201
实际上就是加了个255,它可以还原出byte里的无符号数值。
int a = 201;
byte b = (byte)a;
System.out.println(b);
System.out.println(b & 0xff);
输出:
-55
201
实际上就是加了个255,它可以还原出byte里的无符号数值。
11111111
---------
00000001
给分吧,一般人我不告诉他的
public static void main(String args[]){
int a = 201;
byte b = (byte)a;
int c = b&0xff;
System.out.printf("%x,%x,%x\n",a,b,c);
System.out.println(b);
System.out.println(c); }}
执行结果:
c9,c9,c9
-55
201从第一行可见在进行&0xff后它们的数据并没有改变,都为16进制c9,由此可以得出&0xff后没有任何底层的变化,
只是这个操作先将byte提升为了整数对待,最后在System.out.println(b&0xff)中是当整数来处理的,而在整数中0xc9并没有越界,也就是符号位为0,此时把它看作正数输出
在java中int是占4位.是这样吗 00000000 00000000 00000000 11111111
把它转化为byte是型的时候。是取多少位。我还是有点不明白?
请继续解释?