① Números positivos >> 31 → 0, números negativos >> 31 → -1
4 bytes 32 bits, la operación de desplazamiento a la derecha 31 puede obtener el bit de signo de cualquier número entero
任何正数右移31后只剩符号位0,最终结果为 0
任何负数右移31后也只剩符号位1,溢出的31位截断,空出的31位补符号位1,最终结果为 -1
System.out.println(" 13 :" + proFillZero(Integer.toBinaryString(13)));
System.out.println("-13 :" + proFillZero(Integer.toBinaryString(-13)));
System.out.println(" 13>>31:" + proFillZero(Integer.toBinaryString(13 >> 31)) + " →对应10进制: " + (13 >> 31));
System.out.println("-13>>31:" + proFillZero(Integer.toBinaryString(-13 >> 31)) + " →对应10进制: " + (-13 >> 31));
13 : 00000000000000000000000000001101
-13 : 11111111111111111111111111110011
13>>31: 00000000000000000000000000000000 → 对应10进制: 0
-13>>31: 11111111111111111111111111111111 → 对应10进制: -1
------------------------------------
00000000 01010000 10100000 01011000|
------------------------------------
右移31位
------------------------------------
0|0000000 01010000 10100000 01011000
------------------------------------
空位补0
------------------------------------
00000000 00000000 00000000 00000000|
------------------------------------
最终结果为 0
------------------------------------
10000000 01010000 10100000 01011000|
------------------------------------
右移31位
------------------------------------
1|0000000 01010000 10100000 01011000
------------------------------------
空位补0
------------------------------------
11111111 11111111 11111111 11111111|
------------------------------------
最终结果为 -1