byte b=-1;
int a=(int)((char)b);
int c=(int)((short)b);
为什么输出结果不同?? 
 b强制转换为c时为什么高位补的不是00000000

解决方案 »

  1.   

    -1它最高位是1,不是0,在转换为short整型时当然不会补00000000,Java要为它保留尽量多的信息~
      

  2.   

    b是负数,符号位是1,你要把它转为int时,符号位是不会变的!
      

  3.   

    java 中 char 是 2 字节 无符号数,
    所以 b 转成 char 就已经变成了正数。
      

  4.   

    b的符号位是1,把它转为int时,符号位没变
      

  5.   

    b的符号位是1,把它转为short时,符号位没变
    把它转为char就已经变成了正数
      

  6.   

    a=65535
    c=-1
    想问的是
    A=00000000 00000000 11111111 11111111
    B=                           11111111
    为什么B变为C的时候前面补了8个1?????