public class test {
public static void main(String[] args) {
for(int j = 32; j >=0; j--)
{int i=1 << j;
System.out.println(i);}}
}
结果为:1
-2147483648
1073741824
536870912
268435456
我的理解32转换成INT为00000000 00000000 00000000 00000000 00100000
左移一位应该为00000000 00000000 00000000 00000000 01000000 也就是64
而且后来的负数怎么来的?谢谢了
public static void main(String[] args) {
for(int j = 32; j >=0; j--)
{int i=1 << j;
System.out.println(i);}}
}
结果为:1
-2147483648
1073741824
536870912
268435456
我的理解32转换成INT为00000000 00000000 00000000 00000000 00100000
左移一位应该为00000000 00000000 00000000 00000000 01000000 也就是64
而且后来的负数怎么来的?谢谢了
=1<<15=-2147483648
超过了这个数据范围,ls解释过了
int 是有符号的32位.
最高位为符号位.
所以,1 移位 31 次后,它变成负数了.
它是对 %32 的数进行移位的.
移位只有int类型右操作数对32取余以及long类型右操作数对64位取余两种情况,没有15的.