若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。为什么只有数值右端的低5位才有用?
若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。为什么只有数值右端的低5位才有用.
  解释:
     class AAA {
  public static void main(String[] args){
  byte a=127;
   System.out.println(Integer.toBinaryString(a));
   System.out.println(a);
   a<<=2;
   System.out.println(Integer.toBinaryString(a));
   System.out.println(a);
   byte b=127;
   System.out.println(Integer.toBinaryString(b));
   System.out.println(b);
   System.out.println(Integer.toBinaryString(b<<2));
   System.out.println(b<<2);
  }
}
运行结果:
1111111
127
11111111111111111111111111111100
-4
1111111
127
111111100
508
解答一:a的执行过程      先将 byte型的数 127变成int型,左移2位得到 508,然后把508赋给byte型变量a时只是简单地折断(损失精度)得到-4。
为什么只有数值右端的低5位才有用.?请大家帮我解释这一句。
------解决方案--------------------int类型是32位也就是2的5次幂
如果你移32位以上,那么原来的数的信息会全部丢失,这样也就没有什么意义了