math - 负数的 1 和 2 补码

标签 math binary numbers complement

我找到的所有关于如何找到 1(翻转正二进制位)和 2(翻转正二进制位并加 1)补码的答案似乎都没有回答我的问题。

我的家庭作业要求找到负数的补码。因此,我不是从正数开始,而是需要找出它的负数是什么,而是给了我一个负数,并要求我找到它的补码。

一个愚蠢的想法是,我是否找到正值二进制值,然后翻转位得到我的负数,然后再次翻转它找到负数的 1 补码?

最佳答案

起始数是正数还是负数都没有关系 - 在二进制补码系统中,-x~x + 1 相同。如果你的原数是正数,结果就是负数,如果原数是负数,结果就是正数。 8 位示例 - 二进制表示 2 的补码二进制:

x (decimal) | -x (decimal) | x (binary) | -x (binary) | ~x (binary) | ~x+1 (binary)
------------+--------------+------------+-------------+-------------+---------------
     5      |      -5      |  0000 0101 |  1111 1011  |  1111 1010  |  1111 1011
    -5      |       5      |  1111 1011 |  0000 0101  |  0000 0100  |  0000 0101
   110      |    -110      |  0110 1110 |  1001 0010  |  1001 0001  |  1001 0010
   -38      |      38      |  1101 1010 |  0010 0110  |  0010 0101  |  0010 0110

注意 -x (binary) 列和 ~x+1 (binary) 列是相同的。

如果你需要得到一个数字的 1 的补码,那只是 ~x

关于math - 负数的 1 和 2 补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541316/

相关文章:

mysql二进制日志仅删除日志

java - float 1.0E-12 F 如何转换为二进制代码?

c# - 十进制/双整数 - 向上舍入(不仅仅是最接近的)

python - 你如何在python中检查一个字符串是否只包含数字?

linux - 从已编译的二进制文件中获取宏值(带调试)

math - 将矩阵对角线转换为参差不齐的数组?

html - HTML5 中 SVG 标签的数字属性作为数学表达式,例如 <circle cx ="10+50"cy ="20+50"r ="40"/>

java - 如何获取 double 点后的数字

java - 从数组中打印素数

c++ - C/C++ 泊松圆盘采样的代码/库