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

问题描述 投票:-1回答:2

这个问题在这里已有答案:

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

java bit-manipulation
2个回答
2
投票

你可以做到这一点。

int y = 6^0xf

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

int y = 6^-1;

您还可以使用不同的表示来使其更直观地编写。

int mask = 0xffffffff; //also -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));
    }
© www.soinside.com 2019 - 2024. All rights reserved.