如何切换一个数字的二进制表示位?

时间:2018-01-15 09:55:04

标签: java bit-manipulation

给定一个数字,我想切换数字'n'的位 例如,如果n = 6 - > 0110
我想得到,结果= 9 - > 1001
切换,即 将1转换为0&在二进制表示中将0转换为1 如何在java中以编程方式执行此操作,方法是将num与1的执行XOR 谢谢大家的答案,所以这取决于我想要切换多少位 比如说,如果它的8位然后是0xff
如果它的整个32位然后是oxffffffff
1种方式是n ^ ~0

2 个答案:

答案 0 :(得分:2)

你可以做到这一点。

int y = 6^0xf

如果你想使用完整的int,那么你必须与-1进行异或(二进制补码意味着这是全1)。

int y = 6^-1;

您还可以使用不同的表示方式使其更直观。

int mask = 0xffffffff; //also -1

答案 1 :(得分:2)

   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));
    }