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

c++: How to flip the binary values of each bit in int

本文关键字:二进制 int 何翻转 翻转      更新时间:2023-10-16

假设我有一个整数int a

在c++中,由于int使用4字节(32位)的内存,所有比特将被10占用。因此,我希望翻转每个比特的值。也就是说,只要每个位中有1,就把它转换成0,把0转换成1

有简单的方法来做这件事吗?

编辑:我也想玩布尔代数。如果我能执行基本的布尔运算,比如加减法,

您正在寻找二进制非操作符(~)。

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

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

维基百科和GNU C有很多关于二进制运算符的信息

下面是一个按位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

有关二进制运算符的更多信息,请参见

相关文章: