计算机组成原理-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

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

六自由度机械臂ANN人工神经网络设计:正向逆向运动求解、正向动力控制、拉格朗日-欧拉法推导逆向动力方程(Matlab代码实现)内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,详细介绍了正向与逆向运动求解、正向动力控制以及基于拉格朗日-欧拉法推导逆向动力方程的理论与Matlab代码实现过程。文档还涵盖了PINN物理信息神经网络在微分方程求解、主动噪声控制、天线分析、电动汽车调度、储能优化等多个工程与科研领域的应用案例,并提供了丰富的Matlab/Simulink仿真资源和技术支持方向,体现了其在多科交叉仿真与优化中的综合性价值。; 适合人群:具备一定Matlab编程基础,从事机器人控制、自动化、智能制造、电力系统或相关工程领域研究的科研人员、研究生及工程师。; 使用场景及目标:①掌握六自由度机械臂的运动与动力建模方法;②学习人工神经网络在复杂非线性系统控制中的应用;③借助Matlab实现动力方程推导与仿真验证;④拓展至路径规划、优化调度、信号处理等相关课题的研究与复现。; 阅读建议:建议按目录顺序系统学习,重点关注机械臂建模与神经网络控制部分的代码实现,结合提供的网盘资源进行实践操作,并参考文中列举的优化算法与仿真方法拓展自身研究思路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值