机器数运算

ylanren / 2023-07-21 / 原文

一、加法

  • 对于无符号数:类似十进制加法
          逢2进1,最高位进位舍去。
    
  • 对于有符号定点数:运用补码运算可以直接带符号位运算
          逢2进1,最高位进位舍去。
    

二、减法

在计算机中一般将其转化为加法:

  • 对于无符号数:
          1.被减数不变,减数**全部位**按位取反,末位加1。
          2.做加法
       例如:11001110-10101001
          1.将10101001按位取反,变为:01010110;末位加1:01010111
          2.做加法:11001110
                  +01010111
                  =00100101
          3.验证一下:11001110(206)-10101001(169)=00100101(37)
    
  • 对于有符号定点数:
          使用补码运算,同样也是将减法转换为加法:[x]补-[y]补=[x]补+[-y]补
      步骤:
          1.被减数不变,减数**全部位**按位取反,末位加1。这一步是将[y]补 转为 [-y]补
          2.做加法
       例如:11001110-10101001(补码)
          1.将10101001按位取反,变为:01010110;末位加1:01010111
          2.做加法:11001110
                  +01010111
                  =00100101
          3.验证一下:11001110(-50)-10101001(-87)=00100101(37)
    

总结:可以发现有符号定点数的补码加减法与无符号数操作一致