我必须找到一个十进制数字的二进制补码。输入以字节为单位,结果应以字符串形式。我已经编写了一个将十进制转换为二进制的程序,但是我不知道如何将二进制字符串转换为二进制。补码又称0替换为1,1替换为0。
这是我到目前为止写的:
String toTwoComp(byte n) {
String s = "";
byte num = n;
String res = "";
while (n > -128 && n < 127) {
s = (num % 2) + s;
num = (byte) (num / 2);
if (num == 0) {
break;
}
}
res = "00000000".substring(s.length()) + s;
return res;
}
答案 0 :(得分:0)
任何字节或整数x
的二进制补码就是-x
。那你尝试过吗?
String b = toTwosComp((byte)3);
System.out.println(b);
static String toTwosComp(byte n) {
int twosComp = -n;
return Integer.toBinaryString(twosComp & 0xFF);
}
请注意,您可以执行此操作,只需使用自己的方法即可将其转换为二进制字符串。