按位或0

时间:2014-01-27 07:03:52

标签: c bit-manipulation

按位运算符非常有趣所以我试图找出一种方法来产生相反的效果,或者不是xor的效果。

如果我有两个字符(8位):

char1    char2
=====    =====
1010     1000

after transformation

1000     1000

如果0010是我要将char1和char2转移到该注册商处禁用的值(位置1)

我该怎么做?

or仅在1和1时设置1,而xor仅在1和0或0和1时交换值

2 个答案:

答案 0 :(得分:7)

的反面是而不是。您可以使用设置位,使用和 - 清除位。

#include <assert.h>

int main() {
    int a = 16, b, c;

    // Set bit 3
    b = a | 1<<3; // OR
    assert(b == (8+16));


    // Clear bit 3
    c = b & ~(1<<3); // AND-NOT
    assert(c == 16);
}

答案 1 :(得分:3)

我相信你想要& (and)

1100 & 1010 = 1000

它经常与反转一起使用,将特定位设置为0。

1100 & ~0100 = 1100 & 1011 = 1000