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

4
假设我有一个整数 int a
在 c++ 中,由于这个 int 使用了 4 个字节(32 位)的内存,所有的位都会被 1 或 0 占据。因此,我希望翻转每个位的值。也就是说,在每个位中,无论有多少个 1,都要将其转换为 0,将 0 转换为 1。
是否有一种简单的方法来实现这个功能?
编辑:我还想使用布尔代数。也就是说,如果我可以执行基本的布尔运算,如加法、减法等。
2个回答

11

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

因此

int a = 0x04;
int b = ~a;

b的值为1111 1111 1111 1011,而a的值为0000 0000 0000 0100。

维基百科GNU C中有关于这些二进制运算符的大量信息。


这正是我正在寻找的东西。非常感谢!! - CharcoalG

0

这里是按位 NOT 运算符的示例:

#include <iostream>

int main()
{
    int a = 0;
    int x = ~a;
    unsigned int y = ~a;
    std::cout << x << '\n';
    std::cout << y << '\n';
}

输出:

-1
4294967295

了解更多关于二进制运算符等内容,请点击这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接