我的代码是一个将十进制转换为二进制的类。它将显示二进制,一个补语和两个补语。到目前为止,我已经找到了一个补语,但有一个问题,为两个补语找到解决办法。我的计划是使用补码的输出作为两种补码方法的输入,并在那里进行转换。这样做对吗?
//This method will convert binary result to ones complement
public String do1sComp(){
if (binaryValue.length() == 0)
doBinary();
//Ones Complement
char[] digits = binaryValue.toCharArray();
for (char digit : digits){
if(digit == '0'){
onesComp += "1";
}
else
onesComp += "0";
}
return onesComp;
}
/* This was my attempt to start the method
public String do2sComp(){
if (onesComp.length() == 0){
if (binaryValue.length() == 0)
doBinary();
do1sComp();
}
//Twos Complement
} */
}发布于 2014-01-19 05:08:29
2的补码只是在1的补码中添加一个1。现在,您正在添加二进制位1,而不是int 1。
您将把2的补码存储在一个int中。只需添加另一个包含二进制1的int,得到两个的补码就更复杂了。这涉及按位加法。然而,我在高中时学到了一个窍门。
将二进制中的数字6作为0110。其中一个补语是1001。两者的补语是1010。诀窍是,找到最合适的。做完这件事后,把部分翻到左边,一直翻到最后。
使用Integer.toBinaryString()查看您的答案。
要在int中存储位1,您可以执行int bit = 0b0001,这将在int的低阶位中存储位1。
PS:我还没做过SSCCE。如果我错了,请纠正我
https://stackoverflow.com/questions/21213271
复制相似问题