首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1的补码到2的补码转换

1的补码到2的补码转换
EN

Stack Overflow用户
提问于 2014-01-19 04:37:09
回答 1查看 3.5K关注 0票数 2

我的代码是一个将十进制转换为二进制的类。它将显示二进制,一个补语和两个补语。到目前为止,我已经找到了一个补语,但有一个问题,为两个补语找到解决办法。我的计划是使用补码的输出作为两种补码方法的输入,并在那里进行转换。这样做对吗?

代码语言:javascript
复制
//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


} */
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。如果我错了,请纠正我

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21213271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档