java中int型占据32位,long型占据64位,那么当定义一个long型的二进制数时,如果不满64位,前面会自动补0,所以,哪怕定义的二进制数是32位的,首位也不是符号位了。
public class TestLong {
public static void main(String[] args) {
// 如果定义一个32位的long类型.那么首位的1不会是符号位,所以它的值是 2的31次方+2的一次方+2的0次方;
long val = 0B10000000000000000000000000000011L;
System.out.println(val); // 2147483651
}
}