反转2位数:这是正确的吗?

时间:2016-12-31 17:00:16

标签: bit-manipulation

我有一个2位数x存储在一个字节中,我想将其反转,以便0转换为3,1到2,2到1和3到0。

x^3是否是正确的做法?

此外,对于任意N位数x,x^((1<<N)-1)是否正确?

3 个答案:

答案 0 :(得分:4)

x ^ 3适用于两位数。如果你有4位数字,使用x ^ 15,或者用十六进制写,x ^ 0x0f如果你想要的话。

答案 1 :(得分:1)

不,x^(N-1)无效。可行的是x^(pow(2,N)-1)

答案 2 :(得分:1)

代码:

((~x)&(0x3))

测试代码(同样的代码也应该在C ++中工作):

public static void main(String[] args) {
        // TODO Auto-generated method stub
        //System.out.println("Hello");

        for(int i=0; i<=3; i++) {
            System.out.println("Complement of " + i + " is " + (~i & 0x3));
        }
    }

结果:

Complement of 0 is 3
Complement of 1 is 2
Complement of 2 is 1
Complement of 3 is 0