• 负二进制的面试题


    今天看到一篇关于面试ATC的心得,呵呵,里面提到了一个负二进制的题目:D M$也真够能折腾的。

    1.  如何用负二进制表述十进制等式5+3=8? (原题)
    解: DCBA(-2)=D*(-2)^3+C*(-2)^2+B*(-2)^1+A*(-2)^0 (dec)
                =-D*2^3+C*2^2-B*2^1+D (dec)

    则: 101  (neg-bin) == 5(dec)
        111  (neg-bin) == 3(dec)
        11000(neg-bin) == 8(dec)

    2.  如果以竖式形式描述负二进制加法计算? (我无聊自己给自己出的:D)
    解: 首先得归纳一下负二进制加法规则,
        凡n位上的数字,n为奇数的,如个位、百位、万位等,相加结果得正数,可以与低位相加的进位相抵
        凡n位上的数字,n为偶数的,如十位、千位等,相加得负数,可以与低位相加的进位相抵 

        54321 

        00101 (A) 
      + 00111 (B) 
      ------------ 
        11000     
        
        0+1=1  (neg-bin)
        1+1=110(neg-bin)
        0+0=0  (neg-bin)

        其中,第一位相加的进位与数B上的第二位上的1相抵,所以和的第一、二位为0,
        第三位两个1相加为110,至此加法结束。

    3.  更加复杂一点的法则实例:竖式快速算法
    解: 首先我们两位两位的分析竖式加合,其中有些模式应用起来很方便

        11 == 00
        01
       
        01 == 00
        11
       
        11 == 10
        11
       
        10 == 11
        01
       
        01 == 11
        10
       
        01 == 110
        01
       
        10 == 1100
        10
       
        10 == 1101
        11
       
        11 == 1101
        10
       
        可见,有些两位的局部运算可以在竖式中直接消除,而有些则需要扩展至3位到4位,来看个例子
       
        0110101010
      + 0010100101
        ----------
        01xxxx1111 (利用快速消除法则所得的快速结果)
        1100       (扩展到4位)
      +   1100     (扩展到4位)
        -----------
        0011001111 (直接得出答案)
       
        胡乱敲一个竖式计算起来耍耍,
       
          1010001010101001
          1101010100100111
          ----------------
          xx11011110xx1100
        1101
                  1100
        ------------------
        1101110111xx001100
                1101
        ------------------
        110111011001001100
       
        -41639 + -11037 = -52676 呵呵,验算完毕

  • 相关阅读:
    Python单元测试unittest加载方式之二:加载测试套件
    Python单元测试unittest加载方式之二:加载测试套件
    Python单元测试unittest加载方式之一:unittestmain()启动单元测试模块
    和优秀的人相处
    耐心和恒心
    ubuntu下FTP文件目录共享
    一个不错的编译调试方法
    qt 程序异常崩溃
    minigui SetTimer(hwnd, id, speed)
    minigui 按钮点击弹窗外部 弹窗消失功能 WS_EX_TRANSPARENT
  • 原文地址:https://www.cnblogs.com/neoragex2002/p/88372.html
Copyright © 2020-2023  润新知