我一直在网上搜索,似乎我似乎无法找到这个问题的答案。如何更改二进制数中的位?
示例:说我得到了1010,我想将数字0改为1,将1改为0。
现在,我有一个整数的二进制数。
我完全难过,如果有人能帮助我,谢谢你。
很抱歉,如果有人对我的问题感到困惑。我想要做的是将数字0改为1,将1改为0。
答案 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。