gpt4 book ai didi

java - 1's complement to 2' s补码转换

转载 作者:行者123 更新时间:2023-11-30 07:11:26 25 4
gpt4 key购买 nike

我的代码是一个将十进制转换为二进制的类。它将显示二进制、一个的补码和两个的补码。到目前为止,我已经弄清楚了补码,但在找到补码的解决方案时遇到了问题。我的计划是使用一个补码的输出作为二进制补码方法的输入并在那里进行转换。这是正确的方法吗?

//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


} */
}

最佳答案

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。如有错误请指正

关于java - 1's complement to 2' s补码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21213271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com