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

标签 c++ int bit

假设我有一个整数 int a

在 C++ 中,如 int使用 4 字节(32 位)的内存,所有位将被 1 占用的或0的。所以,我想翻转每一位的值。也就是说,每一位中的任何地方都有 1将其转换为 001 .

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

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

最佳答案

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

所以

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

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

wikipediaGNU C有很多关于这些二元运算符的信息。

关于c++:如何翻转int中每个位的二进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169322/

相关文章:

c++ - GNU 使 : Strange "Multiple targets pattern" - error

c++ - C++ 中的异常处理 : Throwing a double when using "throw(int)"

c++ - 如何在 C++ 中将 4 个字节连接到 8 个字节?

java - 在 Java 中,我试图将 & 与过滤器一起使用来获取整数的每个字节,它适用于最后 3 个字节,但第一个会引发数字格式异常

c - 在类型转换繁重的程序中省略小数点

c - 二进制文件和文本文件在存储方面的区别?

c++ - gcc 是否错过了优化 ctor 初始化列表的机会?

c++ - 在boost序列化中设置模板类的跟踪特征以减少内存消耗

c++ - C++中的静态成员函数错误

C 编程 : convert int* to char*