计算机ppt加减乘除法,计算机实现32位整数加减乘除的方法

计算机实现32位整数加减乘除的方法

前言

1)原码、反码、补码

1.正数的原码、反码、补码都相同

2.负数的反码是保留原码符号位,其他位取反;负数的补码是反码+1

3.正数与负数相加,二进制结果符号位为1,此时是结果的补码,需要-1得出结果反码,再保留符号位取反得出结果

2)乘法原理

1.忽略两个乘数的符号位

2.将第一个乘数分解为2阶泰勒展开式

3.将第二个乘数在展开式的系数为1时的指数向左移位

4.将所有移位的值相加,得出乘积的无符号值

5.对两个乘数的符号位进行异或运算,得出符号位

6.将符号位和无符号乘积合并,得出实际乘积

3)除法原理

1.忽略被除数和除数的符号位

2.从左向右,在被除数中找到第一个1的位置,与除数相比较,若小于除数,则结果为0,余数为1,若大于除数,则商为1,余数为该步被减数减去除数的差值,新的被减数为本次余数后拼接新的被除数位

3.当被除数最后一位运算完毕,将从上向下的各步结果从左向右拼接,就是最终的无符号商,最后一步的余数,是最终的无符号余数

4.对被除数和除数的符号位进行异或运算,得出符号位

5.将符号位和无符号结果、无符号余数进行合并,得出实际到店商和余数

一、加法

1)正常加法

计算:13+18=31

13

0000 0000 0000 0000 0000 0000 0000 0000 1101

18

0000 0000 0000 0000 0000 0000 0000 0001 0010

31

0000 0000 0000 0000 0000 0000 0000 0001 1111

2)结果溢出加法

计算:2^31-1+2^31-1=2^32-2 <> -2^31-2

2^31-1

0111 1111 1111 1111 1111 1111 1111 1111 1111

2^31-1

0111 1111 1111 1111 1111 1111 1111 1111 1111

-2^31-2

1111 1111 1111 1111 1111 1111 1111 1111 1110

二、减法

1)被减数>减数

计算:18-13=5

18

0000 0000 0000 0000 0000 0000 0000 0001 0010

-13 原码

1000 0000 0000 0000 0000 0000 0000 0000 1101

-13 反码

1111 1111 1111 1111 1111 1111 1111 1111 0010

-13 补码

1111 1111 1111 1111 1111 1111 1111 1111 0011

5

0000 0000 0000 0000 0000 0000 0000 0000 0101

2)被减数

计算:13-18=-5

13

0000 0000 0000 0000 0000 0000 0000 0000 1101

-18 原码

1000 0000 0000 0000 0000 0000 0000 0001 0010

-18 反码

1111 1111 1111 1111 1111 1111 1111 1110 1101

-18 补码

1111 1111 1111 1111 1111 1111 1111 1110 1110

-5 补码

1111 1111 1111 1111 1111 1111 1111 1111 1011

-5 反码

1111 1111 1111 1111 1111 1111 1111 1111 1010

-5 原码

1000 0000 0000 0000 0000 0000 0000 0001 0101

3)[0,2^31-1]-最小值

计算:0-2^31=-2^31 <> 0

0

0000 0000 0000 0000 0000 0000 0000 0000 0000

-2^31 原码

1000 0000 0000 0000 0000 0000 0000 0000 0000

-2^31 反码

1111 1111 1111 1111 1111 1111 1111 1111 1111

-2^31 补码

0000 0000 0000 0000 0000 0000 0000 0000 0000

0000 0000 0000 0000 0000 0000 0000 0000 0000

三、乘法

1)正数相乘

计算:13*18=234

13

0000 0000 0000 0000 0000 0000 0000 0000 1101

18

0000 0000 0000 0000 0000 0000 0000 0001 0010

step1:

13=0*2^30 + 0*2^29 +...+ 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0

step2:

0000 0000 0000 0000 0000 0000 0000 0001 0010

+

0000 0000 0000 0000 0000 0000 0000 0100 1000

+

0000 0000 0000 0000 0000 0000 0000 1001 0000

=

234

0000 0000 0000 0000 0000 0000 0000 1110 1010

2)负数相乘/负数正数相乘

计算:-13*(-18)=234

-13

1000 0000 0000 0000 0000 0000 0000 0000 1101

13

0000 0000 0000 0000 0000 0000 0000 0000 1101

-18

1000 0000 0000 0000 0000 0000 0000 0001 0010

18

0000 0000 0000 0000 0000 0000 0000 0001 0010

step1:

13=0*2^30 + 0*2^29 +...+ 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0

step2:

0000 0000 0000 0000 0000 0000 0000 0001 0010

+

0000 0000 0000 0000 0000 0000 0000 0100 1000

+

0000 0000 0000 0000 0000 0000 0000 1001 0000

=

234

0000 0000 0000 0000 0000 0000 0000 1110 1010

对符号位进行异或

234

0000 0000 0000 0000 0000 0000 0000 1110 1010

3)结果溢出

计算:(2^31-1)*2=2^32-2

2^31

0111 1111 1111 1111 1111 1111 1111 1111 1111

2

0000 0000 0000 0000 0000 0000 0000 0000 0010

step1:

2^31=1*2^30 + 1*2^29 +...+ 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0

step2:

0000 0000 0000 0000 0000 0000 0000 0000 0010

+

.

.

.

+

0100 0000 0000 0000 0000 0000 0000 0000 0000

+

1000 0000 0000 0000 0000 0000 0000 0000 0000

=

1111 1111 1111 1111 1111 1111 1111 1111 1110

四、除法

1)被除数 > 除数

计算:18/13 = 1...5

18

0000 0000 0000 0000 0000 0000 0000 0001 0010

13

0000 0000 0000 0000 0000 0000 0000 0000 1101

从左向右依次取出一位被除数与除数比较,直到被除数到达最后一位,忽略前边0

1 < 0000 0000 0000 0000 0000 0000 0000 0000 1101

结果0 余数 1

10 < 0000 0000 0000 0000 0000 0000 0000 0000 1101

结果0 余数 10

100 0< 0000 0000 0000 0000 0000 0000 0000 0000 1101

结果0 余数 100

1001 < 0000 0000 0000 0000 0000 0000 0000 0000 1101

结果0 余数 1001

10010 > 0000 0000 0000 0000 0000 0000 0000 0000 1101

结果1 余数 10010-1101 = 0 0101

结果 0 0001 = 1

余数 0 0101 = 5

2)被除数 < 除数

计算:13/18 = 0...13

13

0000 0000 0000 0000 0000 0000 0000 0000 1101

18

0000 0000 0000 0000 0000 0000 0000 0001 0010

从左向右依次取出一位被除数与除数比较,直到被除数到达最后一位,忽略前边0

1 < 0000 0000 0000 0000 0000 0000 0000 0001 0010

结果0 余数 1

11 < 0000 0000 0000 0000 0000 0000 0000 0001 0010

结果0 余数 11

110 0< 0000 0000 0000 0000 0000 0000 0000 0001 0010

结果0 余数 110

1101 < 0000 0000 0000 0000 0000 0000 0000 0001 0010

结果0 余数 1101

结果 0

余数 1101 = 13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值