如何翻转int中每个位的二进制值
c++: How to flip the binary values of each bit in int
假设我有一个整数int a
在c++中,由于int
使用4字节(32位)的内存,所有比特将被1
或0
占用。因此,我希望翻转每个比特的值。也就是说,只要每个位中有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
有关二进制运算符的更多信息,请参见
相关文章:
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 类型"int"和"const char [15]"到二进制"运算符<<"的无效操作数^
- 反转 18 位 int 的二进制补码
- 使用无符号int作为二进制来在c++中实现一个集
- 如何在C++中将二进制编码十进制转换为 int
- 二进制'operator+' 'int*'和'int*'类型的无效操作数
- 从带有 std::ifstream::read() 的文件中读取 int 遍历 char * 二进制数据
- 二进制">>":未找到采用类型为"std::p air<int,int>"的右操作数的运算符
- 无法一次从二进制文件中读取一个 int
- 使用 c++ 时从二进制文件中读取 int 不正确
- 二进制 '[':未找到采用 'const SortableVector' 类型的左操作数的运算符<int>
- 在 c++ 中将负 int 转换为二进制字符串
- 错误 C2679:二进制'>':找不到采用类型 'int' 的右侧操作数的运算符(或者没有可接受的转换)
- 如何将 int 数组转换为每个数组编号的二进制值的 2d 数组
- 错误:二进制'operator*' 'int [1]'和'float'类型的操作数无效
- 错误 C2679 二进制"=":未找到采用类型 'int' 的右侧操作数的运算符(或者没有可接受的转换)
- C 二进制文件 - 编写INT-奇怪的行为
- 有没有一种优雅的方法来读取二进制文件并将其内容复制到向量<int>
- 错误 C2679 二进制"=":未找到采用类型 'int' 的右侧操作数的运算符(或者没有可接受的转换)
- 在C 中编写二进制INT数组时,然后在MATLAB中读取