【问题标题】:How to convert from one's complement to two's complement如何从一个补码转换为二进制补码
【发布时间】:2014-10-30 16:29:01
【问题描述】:

我对如何从一个补码转换为二进制补码感到困惑。 假设我们在一个补码中有 10101101。如何将其转换为二进制补码?

谢谢

【问题讨论】:

    标签: twos-complement


    【解决方案1】:

    只看定义:

    一个补码表示该值的否定位是原始位中所有位的补码(反转)。

    N 位数的补码定义为从 2^N 中减去原始 N 位数的结果。此操作对原数的效果与取反码加 1 的结果相同。

    在这种情况下,如果10101101 是一个补码,只需加一即可得到两个补码,即10101110。或者,从长远来看:

    1. 补码 = 10101101
    2. 原始数字 = 01010010(根据补码的定义反转位)
    3. 二进制补码 = 2^8 - 01010010 = 100000000 - 01010010 = 10101110

    【讨论】:

    • 好的,谢谢...然后,如果我们想从二进制补码负数转换为二进制表示。我们将如何做到这一点?我们要减去一个吗?
    • @FemX 得到什么的二进制表示?原始的,未否定的数字?如果你有一个 2 的补码并且想将它否定回原来的,你会反转操作:减 1,然后取补码(注意:“补码”是它自己的单位逆,所以 X 的补码的补码是原 X)。
    • @FemX,如果你有一个 2 的补码并且你想要 1 的补码,是的,你只需减去 1。
    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2013-09-28
    • 2016-05-18
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多