详解Java中的Integer.reverse()方法,一步一步带你分析
假设有一个十进制整数,要将它的32位二进制按位反转后再以十进制数输出,要怎么做呢?
比如说: 43261597(32位二进制:00000010100101000001111010011101)
反转后:-1183307456(32位二进制:10111001011110000010100101000000)
(Java中使用补码来表示整数,其32位二进制的第一位表示符号,0为正,1为负)
可能我们第一反应就是通过Integer.toBinaryString()
获取它的二进制字符串然后反转,然后再转成十进制数就行了,简单粗暴。而实际上Java提供了一个Integer.reverse()
方法来直接帮助我们进行这种操作:
/**
* Returns the value obtained by reversing the order of the bits in the
* two's complement binary representation of the specified {@code int}
* value.
*
* @param i the value to be reversed
* @return the value obtained by reversing order of the bits in the
* specified {@code int} value.
* @since 1.5
*/
public static int reverse(int i) {
// HD, Figure 7-1
i = (i & 0x55555555