0

我一直在网上搜索,似乎永远找不到这个问题的答案。如何更改二进制数中的位?

示例:假设我得到 1010,我想将数字 0 更改为 1,将 1 更改为 0。

现在,我有一个整数中的二进制数。

我完全被难住了,如果有人可以帮助我,谢谢。

对不起,如果人们对我的问题感到困惑。我想要做的是将数字 0's 更改为 1's 和 1's 更改为 0's 。

4

4 回答 4

1

您不只是在 Integer 上寻找这种方法:http ://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#reverse(int )?

这应该可以解决问题。

于 2012-04-09T10:20:21.783 回答
1

如果你想翻转你能做的所有位

int i = 0b1010;

或在 Java 6 中

int i = Integer.parseInt("1010", 2);
int i2 = ~i; // toggle 0 and 1's.
int i3 = i ^ 0xFF; // toggle the lower 8 bit only.

或者你可以试试

public static void main(String... args) {
    System.out.println(toggleBits("1010"));
    System.out.println(toggleBits("00001010"));
    System.out.println(toggleBits("1100001010"));
}

private static String toggleBits(String s) {
    long i = Long.parseLong(s, 2);
    long i2 = i ^ ((1L << s.length()) - 1);
    String s2 = Long.toBinaryString(i2);
    while (s2.length() < s.length()) s2 = '0' + s2;
    return s2;
}
于 2012-04-09T10:33:10.403 回答
0

如果您尝试进行类似于字符串反转操作的位反转操作,那么我认为 Java 有一个名为“ reverse()”(或类似)的方法,我猜它会为您工作。您也可以尝试@Dozz的答案。

于 2012-04-09T10:27:42.590 回答
0

评论中讨论和建议的内容的快速演示将是:

    int i = 42;
    int j = i ^ 0xFF;
    System.out.println(Integer.toBinaryString(i));
    System.out.println(Integer.toBinaryString(j));

在此处查看有关 XOR的更多信息。

于 2012-04-09T10:32:37.800 回答