假设我有一个整数int a
在c ++中,由于此int
使用4个字节(32位)的内存,所有位都将由1
或0
占用。所以,我希望翻转每一位的值。也就是说,每个位都有1
将其转换为0
和0
转换为1
。
有没有简单的方法可以解决这个问题?
编辑:我也想玩布尔代数。那就是我可以执行基本的布尔运算,如加法,减法等。
答案 0 :(得分:3)
您正在寻找二元非运算符(〜)。
所以
int a = 0x04;
int b = ~a;
b
的值为1111 1111 1111 1011,而a
的值为0000 0000 0000 0100。
答案 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