我有一个整数,我想将其中的 1 位从 0 切换到 1 或从 1 切换到 0。我不知道它的状态。我如何在 1 条语句中做到这一点?
- 使用
& | ~ ^
- 避免
if else
(添加了异或运算符)
我有一个整数,我想将其中的 1 位从 0 切换到 1 或从 1 切换到 0。我不知道它的状态。我如何在 1 条语句中做到这一点?
& | ~ ^
if else
(添加了异或运算符)
这是一个常见的操作,并且有足够的指令可用。例如,这里.
设置一点
bit_fld |= (1 << n)
清一点
bit_fld &= ~(1 << n)
切换一下
bit_fld ^= (1 << n)
测试一下
bit_fld & (1 << n)
如果您只想切换特定位,请使用XOR ( ^
) 操作。查看 XOR 真值表以找出答案。
设置位 使用按位或运算符 (|) 设置位。
number |= 1 << x;
这将设置位 x。
要清除位,请使用按位与运算符 (&) 清除位。
number &= ~(1 << x);
这将清除位 x。您必须使用按位非运算符 (~) 反转位字符串,然后将其与。
切换一下
The XOR operator (^) can be used to toggle a bit.
数字 ^= 1 << x;
要翻转一点,您可以将输入数字与另一个数字与您要翻转的位进行异或。基于 Java 的示例:
int a = 0b1001;
System.out.println(Integer.toBinaryString(a));
a = a ^ 0b0100; // flip third LSB
System.out.println(Integer.toBinaryString(a));
a = a ^ 0b0100; // flip it back
System.out.println(Integer.toBinaryString(a));
XOR 不是您提到的允许的运算符之一,但可以根据它们定义 (示例):
int xor(int p, int q) {
return (p & ~q) | (~p & q);
}
(根据需要内联此表达式。)