我将二进制翻转的代码的一部分提出来问个问题
public static int reverse(int i)
{
i = (i & 0x55555555) << 1 | (i >>> 1) & 0x55555555;
}
传入的十进制数数转换成二进制
会返回
也就是每两位会互相调换位置,即01、10、11、00调换了位置,我演算了一下确实可以达到这个效果,但是不明白其中的所以然,是这里有什么规律还是我把这种方式背下来就行了呢,前辈们都是怎么理解的?
我知道16进制的0x55555555=32位的0101010101...还有什么思路呢