【问题标题】:Two's Compliment - Method Analysis二进制补码 - 方法分析
【发布时间】:2019-06-09 18:59:57
【问题描述】:

我有一个关于两个人的恭维方法的问题:这两种方法中哪个是正确的,我该如何反驳不正确的方法?

开始示例任务:将负十进制数 -20 转换为二进制补码负二进制数(以 8 位二进制形式保存)。

方法一:

  1. 求数字的正二进制值,
  2. 翻转该二进制值的位
  3. 翻转的数字加一

例如:对于 -20.. 二进制的20是00010100,翻转的位是11101011,然后将翻转的位加1得到11101100。 所以,11101100 在二进制补码中是 -20。

方法二:

  1. 正负值减一
  2. 找到该十进制数的正二进制数
  3. 翻转该二进制数的位

示例:对于 -20.. 20 是正十进制数,因此 20-1 = 19。二进制中的 19 是 00010011。翻转位:11101100。11101100 是二进制补码中的 -20。

【问题讨论】:

  • 我投票结束这个问题,因为它不是关于实际编程,而是属于Computer Science Stack Exchange,一旦提问者添加了更多他自己的工作并解释了他在哪里卡住了。

标签: math binary twos-complement


【解决方案1】:

这两种方法都有效。

给定一个 n 位数字 A=an-1,an-2...a0,C2 是满足 A+C2(A)=2^n 的数字

如果 /A 是 A 的补码,则很容易证明 A+/A=11..11=2^n-1 => C2=/A+1 证明了第一种方法。

第二种方法表明 C2(A)=/(A-1)。如果我们计算 /(A-1) + (A-1)=11...11=2^n-1,我们可以看到 /(A-1)+A=2^n 证明了第二种方法。

【讨论】:

    猜你喜欢
    • 2019-03-11
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2021-12-14
    • 2012-11-23
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多