负数的加法要利用补码化为加法来做,减法运算当然也要设法化为加法来做。其所以使用这种方法而不使用直接减法,是因为它可以和常规的加法运算使用同一加法器电路,从而简化了计算机的设计。
补码减法的公式是:
[x-y]补=[x]补-[y]补=[x]补+[-y]补 | ( 2.2.2 ) |
所以 | [-y]补=-[y]补即减去y补相当于加上-y的补 | (2.2.5) |
不难发现,只要能通过[y]补求得[ - y]补,就可以将补码减法运算化为补码加法运算。
已知[y]补求[ - y]补的法则是:对 [y]补各位(包括符号位)取反且末位加1,就可以得到[ - y]补。
===================================================================================================================
于是有了一下的实验:
(下载次数: 4, 2013-9-9 19:52 上传)
不过由仿真图如下:
我们发现当乘数为0时,算法发生了错误,主要因为两个八位二进制数加减运算扩展为九位二进制数时,符号位发生错误,为了避免这种错误,我们有了一下实验:
(下载次数: 5, 2013-9-9 19:52 上传)
仿真图如下:
5从图中可以看到,程序已经正确!