位运算符想做按位减的运算怎么写式子?

A和B.
当A里面某个位是1, B的同样的位也是1时,运算结果使A里面的那个位变成0.

比如
A = 0011 1100
B = 0000 1101
我想要运算后结果是 c=0011 0000 该怎么写式子?

阅读 1.9k
2 个回答

c=A&~B就可以,这样假设~B=C,先把C中A位置为1的拿出来,根据题意,将B取反,拿到AB位置为0的数即可。代码如下:

#include <iostream>
#include <bitset>
#include <string>

int
main(int argc, char *argv[])
{
    int A = 0b00111100;
    int B = 0b00001101;
    std::string s = std::bitset<8>(A&~B).to_string();
    std::cout << s << std::endl;

    return 0;
}

A = 0011 1100
B = 0000 1101

C = A
D = A & B // 0011 1100 & 00001101 - ->0000 1100
Result = C ^ D // 0011 1100 ^ 0000 1100 -> 0011 0000

我的思路大概这样,楼上哪位大大的方法更简单

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题