这个问题在这里已有答案:
给定一个数字,我想切换数字'n'的位
例如,如果n = 6 - > 0110
我想得到,结果= 9 - > 1001
切换,即
在二进制表示中将1转换为0并将0转换为1
如何在java中以编程方式执行此操作,方法是使用1的num进行异或
谢谢大家的答案,所以这取决于我想切换多少位
比如说,如果它的8位然后是0xff
如果它的全部32位然后是oxffffffff
1路将是n ^ ~0
你可以做到这一点。
int y = 6^0xf
如果你想使用完整的int,那么你必须与-1进行异或(二进制补码意味着这是全1)。
int y = 6^-1;
您还可以使用不同的表示来使其更直观地编写。
int mask = 0xffffffff; //also -1
public static void main(final String[] args) {
final int n = 0b0110;
System.out.println(Integer.toBinaryString(n));
final int m = n ^ 0xffffffff;
System.out.println(Integer.toBinaryString(m));
}