有符号数乘法运算

四位有符号数的乘法运算

首先在乘法运算a*b中,a为被乘数,b为乘数。在有符号数的乘法运算中,我们需要将被乘数和乘数先转化为补码进行乘法运算。关于原码、反码、补码的关系,可以查阅数电书,这里只简单地说一下,正数的原码=反码=补码;负数的补码是原码的最高位(符号位)保持不变,其余位分别取反;负数的补码是在反码的基础上加1。两个四位有符号二进制数相乘得到的结果是八位有符号二进制数。

那么在此基础上,可以将有符号数的乘法运算分为以下四种情况:

1、a与b均为正数

假设a=+5,b=+3

 

直接相乘,然后用最高位补齐8位(标蓝色的为扩展的符号位),再相加。又因为正数的补码就是其本身,所以得到结果00001111,化为十进制就是+15,正确。

2、a为正数,b为负数

假设a=+5,b=-3,则a的补码为0101,b的补码为1101。

 注意看标红的5个数字,本应该得到0101四位数,再按照扩展符号位的做法,得到00101五位数。但由于b的符号位为1(即b为负数),那么我们需要将得到的00101这五位数,均按位取反再加1,这样就能得到标红的11011了。

相加得到结果11110001,此时是补码,再求其原码得10001111,化为十进制为-15,正确。

3、a为负数,b为正数

假设a=-3,b=+5,则a的补码为1101,b的补码为0101。

 此时,由于b为正数,并不需要像第二种情况,b为负数那样将标红的数按位取反再加1。将得到的补码结果11110001,求其原码得10001111,化为十进制为-15,正确。

4、a与b均为负数

假设a=-5,b=-3,则a的补码为1011,b的补码为1101。

 相加可以得到已经溢出的结果,只取其低八位,得到00001111,正数的原码等于补码,所以化为十进制得+15,正确。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值