若对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位才有用.?请大家帮我解释这一句。
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位才有用.?请大家帮我解释这一句。
解决方案 »
- file.listFiles()内存溢出如何解决?
- 几小时以后该去面试了。。。咋办。。。
- 一个简单问题请帮帮忙
- 这些为什么都不行呢?请教
- 什么是原生窗口?
- 如何计算得出两个日期段的日期列表?
- 请问如何用java获得图片文件的相关信息(文件大小,图片尺寸,像素等),图片格式为jpg,gif,bmp等
- Iterator是一种什么样的类型
- 可怜我吧!就这么多分了!!各位!在tomcat 4.0.1和tomcat 4.0.2中怎么样建立一个新的虚拟目录????
- jbuilder怎么老是自己打开中文输入法啊
- 如何在JAVA文本域中显示查询到的一张SQL的表的全部类容
- 我最近准备写一个Swing/AWT/SWT设计与实现方面的比较,欢迎您光临我的博客
如果你移32位以上,那么原来的数的信息会全部丢失,这样也就没有什么意义了
X<<y;
是指y的低5位才有用,即不能大于32。
class AAA {
public static void main(String[] args){
int a=140;
System.out.println(Integer.toBinaryString(a));
System.out.println(a);
System.out.println(Integer.toBinaryString(a<<34));
System.out.println(a<<34);
} }
运行结果:
10001100
140
1000110000
560
谢谢 我也被 《think in java》的这段给弄晕了