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

时间:2016-10-21 05:54:53

标签: c++ int bit

假设我有一个整数int a

在c ++中,由于此int使用4个字节(32位)的内存,所有位都将由10占用。所以,我希望翻转每一位的值。也就是说,每个位都有1将其转换为00转换为1

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

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

2 个答案:

答案 0 :(得分:3)

您正在寻找二元非运算符(〜)。

所以

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

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

wikipediaGNU C有大量关于这些二元运算符的信息

答案 1 :(得分: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

有关二元运算符的更多信息,请尝试here