私はウェブを検索してきましたが、この質問に対する答えを見つけることができないようです. 2 進数のビットをどのように変更しますか?
例: 1010 を取得し、数字の 0 を 1 に、1 を 0 に変更したいとします。
今、私は2進数を整数で持っています。
誰かが私を助けてくれたら、私は完全に困惑しています。
私の質問で人々が混乱している場合は申し訳ありません。私がやりたいのは、数字の 0 を 1 に、1 を 0 に変更することです。
あなたがすることができるすべてのビットを反転させたい場合
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;
}
整数でこのメソッドを探しているだけではありません: http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#reverse(int )?
これでうまくいくはずです。
コメントで議論され提案されたものの簡単なデモンストレーションは次のようになります。
int i = 42;
int j = i ^ 0xFF;
System.out.println(Integer.toBinaryString(i));
System.out.println(Integer.toBinaryString(j));
XORの詳細については、こちらをご覧ください。
文字列リバース操作と同様のビットリバース操作を行おうとしている場合、Javaには " reverse()
"(または同様の)という名前のメソッドがあり、これが機能すると思います。@Dozzで答えを試すこともできます。