我必须找到十进制数的补码。输入为字节,结果应为字符串。我已经编写了一个将十进制转换为二进制的程序,但我不知道如何将二进制字符串转换为补码,即用 1 替换 0,用 0 替换 1。
这是我到目前为止所写的内容:
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;
}
任何字节或 int x
的二进制补码就是 -x
。那么你尝试过这个吗?
String b = toTwosComp((byte)3);
System.out.println(b);
static String toTwosComp(byte n) {
int twosComp = -n;
return Integer.toBinaryString(twosComp & 0xFF);
}
请注意,您可以执行此操作,只需使用自己的方法转换为二进制字符串即可。
我是一名优秀的程序员,十分优秀!