Integer.toBinaryString()方法是将int类型的数字转化为二进制然后以字符串形式输出。
疑问1:负数的输出为什么有那么多1?
因为这里是将Integer是int的包装类,在内存中也是占4个字节,32位,所以是负数一共有32位。
解释一下i<<=2:
i左移两位然后赋给i,此时i=-4,与+=/-=意思相同,只不过这里是位运算。
Integer.valueof():
将二进制转为十进制。
2)“>>>”运算符所作的是无符号的位移处理。比较神奇的是,无符号右移后少了一位,具体对比如下:
那右移两位呢?发现又少了一位。但是为什么我就不是很清楚了。欢迎评论。
右移31位呢???变成1了。