计算机组成原理-Chapter3

Chapter3 算术运算

3.1 乘法器

3.1.1 乘法器-Version 1

在这里插入图片描述
在这里插入图片描述
        这是最符合人的计算思维的一个运算方式,以图片中的数字为例,各个寄存器内部的值为:

乘数最低位被乘数寄存器乘数寄存器积寄存器
(初始化)0000 00100000 00110000 0000
10000 01000000 00010000 0010
10000 10000000 00000000 0110
00001 00000000 00000000 0110
00010 00000000 00000000 0110

3.1.2 乘法器-Version 2

在这里插入图片描述在这里插入图片描述
        以0001 x 0111为例:

计算乘数最低位被乘数寄存器乘数寄存器积寄存器步骤
x(初始化)000101110000 0000
a1000101110001 0000将被乘数加到积寄存器高4位
a1000101110000 1000将积寄存器右移一位
a1000100110000 1000将乘数寄存器右移一位
b1000100110001 1000将被乘数加到积寄存器高4位
b1000100110000 1100将积寄存器右移一位
b1000100010000 1100将乘数寄存器右移一位
c1000100010001 1100将被乘数加到积寄存器高4位
c1000100010000 1110将积寄存器右移一位
c1000100000000 1110将乘数寄存器右移一位
d0000100000000 0111将积寄存器右移一位
d0000100000000 0111将乘数寄存器右移一位
结束

3.1.3 乘法器-Version 3

        更加高效地借助积寄存器的低32位在运算初始化是全为0而又浪费的情况,将积寄存器的低32位在初始化时作为乘数寄存器。
在这里插入图片描述在这里插入图片描述

3.1.4 有符号数运算——布氏算法

在这里插入图片描述
        运算时遵循表格:

当前位上一位运算操作
10积做减法
01积做加法
11不做运算,仅移位
00不做运算,仅移位

        例如2×(−3)=−62 \times(-3) = -62×(3)=6,即0010×1101=11110100010 \times 1101 = 111 10100010×1101=1111010

运算步骤被乘数
0初始化值00100000 1101 0
11.c:10->积=积-被乘数00101110 1101 0
12.右移积00101111 0110 1
21.b:01->积 = 积+被乘数00100001 0110 1
22.右移积00100000 1011 0
31.c:10->积=积-被乘数00101110 1011 0
32.右移积00101111 0101 1
41.d:11->无运算00101111 0101 1
42.右移积00101111 1010 1

3.2 除法器

3.2.1 除法器-Version 1

在这里插入图片描述
在这里插入图片描述

除法器-Version 2

在这里插入图片描述

除法器-Version 3

在这里插入图片描述

在这里插入图片描述

单精度浮点数IEEE

在这里插入图片描述
在这里插入图片描述
        两个比较特殊的浮点数:0和inf的表示方法分别为(以8位为例):

符号位指数位尾数位
000000000
01111000inf

在这里插入图片描述
        计算一个8位的浮点数究竟可以表示多少数字:

步骤个数
首先一共有8位282^828
接下来对于正数而言,在0 1111 000之后的所有值都是无效的,这种无效的数字有23−12^3 - 1231
同上一步有负数的无效数字23−12^3 - 1231
在计算过程中0的表示方式出现了两种:0 0000 000和1 0000 000,要去掉一个1
所以说总的可以表示的数字有:28−14−1=2412^8 - 14 - 1 = 24128141=241

        浮点数的加法,尤其是阶数不相同的,以x=0.1101×24,y=0.1011×21x=0.1101\times2^{4},y=0.1011\times2^1x=0.1101×24y=0.1011×21为例:

步骤
将x转化为浮点数0 1010 101
将y转化为浮点数0 0111 011
将y向x进行对阶0 1010 (0) 001
相加0 1010 110
则x+y=1.11×231.11 \times 2^31.11×23

在计算过程中会由于尾数位数的问题造成了部分值的舍弃造成不精确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值