El propósito de la operación de desplazamiento a la derecha de la operación de bits de Java

① 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

Supongo que te gusta

Origin blog.csdn.net/weixin_37646636/article/details/132676495
Recomendado
Clasificación