当前位置:   article > 正文

verilog之原码、反码、补码、绝对值的乘法运算理解与证明_带符号数4bit乘8bit

带符号数4bit乘8bit

全文以以下4bit有符号数为例:

(先说结果,后证明)

条件:

A = 1000b(补码) = -8d

B = 1110b(补码) = -2d

结果:

A * B = -2 * -8 = 16d =0001 0000b(补码=原码)

理解:

  • 首先,被乘数和乘数都是4bit,所以结果是8bit
  • 用原码表示有符号数很简单,负数就是把正数的最高为改为1;
    正数:原码 = 反码 = 补码;
    负数的反码:原码(除符号位)取反;(中间过程,一般用不到)
    负数的补码:反码+1;计算机运算用的是补码
    数值原码反码补码
    1000100010001
    0

    0000

    1000

    0000

    1111

    0000
    -2101011011110
    -7111110001001
    -8无原码无反码1000

     

 

 

 

 



 

  • 补码的运算,一般要用到绝对值,正数的绝对值为本身,以下证明负数的绝对值

    |补码| = 反码 + 1    (负数补码的绝对值 = 补码的反码 + 1),以4bit为例:

    ∵ 补码 + |补码| = 0;
    ∵ 补码 + 反码 = 1111 = 0 - 1
    ∴ 反码 + 1 = 0 - 补码 = |补码|  得证

    所以乘法运算可以通过取绝对值相乘的结果,再判断符号位来完成;
  • 这里-8的补码为1000,绝对值也是1000。

证明结果:

|A| = 1000
|B| = 0010
|A| * |B| = 0001 0000b = 16d

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/453964
推荐阅读
相关标签
  

闽ICP备14008679号