short b=(short)0xd403;
System.out.println("b="+b);
int c=b<<3;
System.out.println("b<<3="+c);请写出结果,并解释!

解决方案 »

  1.   

    short的最大值:Short.MAX_VALUE = 0x7fff
    而:0xd403 > 0x7fff溢出。计算结果可想而知。实际:实际:b<<3=434200,使用LONG类型可以搞定。
      

  2.   

    short b=(short)0xd403;
    b的一进制:1101 0100 0000 0011
    第一位应该是符号位,那b应该是-(101 0100 0000 0011)=-21507啊
    可是运行结果是-11261,请为什么?希望今晚就解决!
      

  3.   

    运行结果如下:
    b=-11261  由于0xd403(=54275)大于0x7fff(=32767)导致溢出,结果不正确。
    b<<3=-90088  b<<3相当于b*8
      

  4.   

    "short b=(short)0xd403;"JAVA已经不能正确转换,没有为什么的!
    你把2升的液体放在体积只有1升的容器中,难道不溢出吗?
    在给short类型分配内存时只有16位,而0xd403放不下啊^-^