c ++:如何翻转int中每个位的二进制值

Cha*_*alG 3 c++ int bit

假设我有一个整数 int a

在 c++ 中,由于这int使用 4 个字节(32 位)的内存,因此所有位都将被1's 或0's占用。所以,我希望翻转每一位的值。也就是说,只要在每一位有1它转换为001

有没有简单的方法来解决这个问题?

编辑:我也想玩布尔代数。也就是说,如果我可以执行基本的布尔运算,如加法、减法等。

Har*_*ald 6

您正在寻找二进制非运算符 (~)。

所以

int a = 0x04;
int b = ~a;
Run Code Online (Sandbox Code Playgroud)

的值为b1111 1111 1111 1011,而 的值为a0000 0000 0000 0100。

维基百科GNU C有大量的这些信息的二元运算符