0

私はウェブを検索してきましたが、この質問に対する答えを見つけることができないようです. 2 進数のビットをどのように変更しますか?

例: 1010 を取得し、数字の 0 を 1 に、1 を 0 に変更したいとします。

今、私は2進数を整数で持っています。

誰かが私を助けてくれたら、私は完全に困惑しています。

私の質問で人々が混乱している場合は申し訳ありません。私がやりたいのは、数字の 0 を 1 に、1 を 0 に変更することです。

4

4 に答える 4

1

あなたがすることができるすべてのビットを反転させたい場合

int i = 0b1010;

またはJava6の場合

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 に答える
1

整数でこのメソッドを探しているだけではありません: http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#reverse(int )?

これでうまくいくはずです。

于 2012-04-09T10:20:21.783 に答える
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 に答える
0

文字列リバース操作と同様のビットリバース操作を行おうとしている場合、Javaには " reverse()"(または同様の)という名前のメソッドがあり、これが機能すると思います。@Dozzで答えを試すこともできます。

于 2012-04-09T10:27:42.590 に答える