Java:更改二进制数,如1010并反转位。 1010 = 0101. 0到1和1到0

时间:2012-04-09 10:16:37

标签: java binary integer

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

  

示例:说我得到了1010,我想将数字0改为1,将1改为0。

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

我完全难过,如果有人能帮助我,谢谢你。

很抱歉,如果有人对我的问题感到困惑。我想要做的是将数字0改为1,将1改为0。

4 个答案:

答案 0 :(得分:1)

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

这应该可以解决问题。

答案 1 :(得分: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;
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

详细了解XOR here