触发执行的最小正数

时间:2016-05-01 09:02:38

标签: cpu-architecture twos-complement base-conversion

我正在学习计算机体系结构课程,我有以下练习:

  

应该添加到-20的最小正十进制数是多少,以便触发进位(以2补码表示法)?

我解决了这个练习,但我不确定我的结果。所以我发现了这个:

首先将-20转换为2补充二进制表示法。这给出了-20 = 11101100.现在添加000101000来触发执行。相当于20。

那会是正确的吗?

1 个答案:

答案 0 :(得分:0)

是的!那是对的!

-20添加到20会导致0结果为1。如果您选择任何小于20的正数,则不会生成结转,结果将为负数。如果您选择任何大于20的正数,它将生成带有正结果的结转。所以20就是您正在寻找的答案。

如果你真的想进入二进制细节,你可以一步一步:

  1. 我们正在寻找一个会添加到-20的号码,并会生成一个结果,让我们用x表示,y将是结果并且c将是结转。
  2.       11101100
        + xxxxxxxx
          --------
         cyyyyyyyy
    
    1. 我们正在寻找c = 1,我们知道X is positive所以最重要的一点是0
    2.       11101100
          + 0xxxxxxx
            --------
           1yyyyyyyy
      
      1. 现在我们可以清楚地看到,我们从第7位获得结转的唯一方法是从第6位获取结转。所以y[6] = 0
      2.       11101100
            + 0xxxxxxx
              --------
             10yyyyyyy
        
        1. 我们可以通过两种方式生成一个随机位6x[6]是一个。或者从第5位进行了结转。我们希望最小化x,因此我们应该从位x = 0选择5进位。
        2.       11101100
              + 00xxxxxx
                --------
               10yyyyyyy
          
          1. 同样适用于位5。我们可以选择x[5] = 1或来自4位的结转。我们应该从位4开始进位,因为我们必须最小化x
          2.       11101100
                + 000xxxxx
                  --------
                 10yyyyyyy
            
            1. 现在我们除了设置x[4] = 1之外没有任何其他选项,因为如果x[4] = 0没有任何进位传播到更高位。
            2.       11101100
                  + 0001xxxx
                    --------
                   10yyyyyyy
              
              1. 我们又回到4. x[3] = 0,以尽量减少x
              2.       11101100
                    + 00010xxx
                      --------
                     10yyyyyyy
                
                1. 最后我们到了操作数的最后1。这是我们生成进位的最后机会。如果我们选择x = 0,则不会执行。我们唯一的选择是x = 1
                2.       11101100
                      + 000101xx
                        --------
                       10yyyyyyy
                  
                  1. x的最后两位应该是0,因为我们再一次将x最小化。
                  2.       11101100
                        + 00010100
                          --------
                         10yyyyyyy
                    
                    1. 结果是......(带进位)
                    2.       11111
                            11101100
                          + 00010100
                            --------
                           100000000
                      

                      钽哒!