Java中:为什么1L<<32等于4294967296 ,而1<<32等于1的原因
你需要了解整数的二进制存储形式以及移位运算的基本操作
对于int类型的整数移位a>>b(移动位数),系统先用b对32求余,得到的结果才是真正移位的位数
对于long类型的整数移位,同上,不过是对64求余
对于1L<<32,实际移动位数32%64=32
1L:0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0001
//对long类型的1左移32位
1L<<32:0000 0000 0000 0000 0000 0000 0000 0000 0000
1000 0000 0000 0000 0000 0000 0000 0000 0000 =2^32=4294967296
对于1<<32,实际移动位数32%32=0相当于没移动
1:0000 0000 0000 0000 0000 0000 0000 0001
1>>32:0000 0000 0000 0000 0000 0000 0000 0001 =1