按两位分组的位的按位运算序列

时间:2014-05-14 20:03:15

标签: bit-manipulation bitwise-operators

我正在寻找一系列按位运算 以下财产:

   | 00  01  10  11
---|---------------
00 | 00
01 | 01  01
10 | 00  01  00
11 | 00  01  11  11

操作的位组是垂直的 和水平边距,结果矩阵是对称的。

1 个答案:

答案 0 :(得分:1)

以下代码实现了您在C / C ++中的所需。

#include<stdio.h>
int main(void)
{
    int i, j;
    for(i=0; i<4; i++)
    {
        for(j=0; j<4; j++)
        {
            int x = i&j&(i|j)<<1|(i|j)&(~((i^j)&(i^j)>>1)|(i>>1^i))&1;
            printf("%d%d ", x>>1, x&1);
        }
        printf("\n");
    }
    return 0;
}