Swap Adjacent Bits

d
package com.thealgorithms.bitmanipulation;

/**
 * Swap every pair of adjacent bits of a given number.
 * @author Lakshyajeet Singh Goyal (https://github.com/DarkMatter-999)
 */

public final class SwapAdjacentBits {
    private SwapAdjacentBits() {
    }

    public static int swapAdjacentBits(int num) {
        // mask the even bits (0xAAAAAAAA => 10101010...)
        int evenBits = num & 0xAAAAAAAA;

        // mask the odd bits (0x55555555 => 01010101...)
        int oddBits = num & 0x55555555;

        // right shift even bits and left shift odd bits
        evenBits >>= 1;
        oddBits <<= 1;

        // combine shifted bits
        return evenBits | oddBits;
    }
}