第六章、计算机组成原理—数字

第六章、计算机组成原理—数字

主要内容

1、计算机中数的表示

2、计算机的运算方式

3、运算器的设计

4、主要讲解ALU

6.1、无符号数和有数

6.1.1、无符号数

1、内容

1、寄存器的位数

2、反映无符号数的表示范围

3、图示

image-20230818212715856

6.1.2、有符号数

1、机器数与真值

1、内容

image-20230818213516995

2、原码表示法

1、整数

1、如果是正数:就是带绝对值的原码

2、如果是负数:就2^n(n是位数)-x

image-20230818214752522

2、小数

1、公式

image-20230818215345645

x为真值

2、例子

image-20230818215359853

3、例子

image-20230818215959884

4、原码特点

1、简单、直观

2、正负数,只需要更改0,1;

5、出现问题

image-20230818220339320

6.1.3、补码表示法

1、补的概念

1、时钟;逆时针;顺时针

2、内容

image-20230823095128057

2、结论

1、一个负数加上“模”即得该负数的补数

2、一个正数和一个负数互为补数时,绝对值的和是模数

3、例子

image-20230823095526449

3、正数的补数是自己

1、 正数的补数,符号位填0,负数的符号位填1

2、两个互为补数的数,分别加上模,结果仍互为补数

3、例子

image-2023082310075969

4、补码的定义

1、整数

1、如果是整数,公式

image-20230823101318337

2、例子

image-20230823101336905

2、小数

1、公式

image-20230823101841161

2、例子

image-20230823101857631

5、求补码的快捷方式

1、当真值为负值时

1、直接把真值全部取反然后+1,

2,必须考虑计算机的字长

3、例子1

image-20230823110105684

4、自我理解

image-20230823110141640

2、当补码为负值时,就是最高位为1的时候

1、也是一样的,符号位不变,数值取反+1

2、例子

image-20230823110654597

3、练习题

image-20230823112038342

6、补码最大好处是:将减法转换为加法

6.1.4、反码表示法

1、定义

1、整数

1、公式

image-20230823112454241

2、注意机器字长的位数

3、例子

image-20230823112508477

2、小数

1、公式

image-20230823112852363

2、例子

image-20230823112905273

3、注意机器字长的位数

4、例子2

image-20230823113147922

6.1.5、总结

1、最高位为符号位,书写上用","(整数);或"."(小数)将数值部分和符号位隔开

2、对于正数,原码 = 补码 = 反码

3、对于负数来说,符号位都是1

4、负数原码取反+1 == 补码

5、负数原码取反 == 反码

6、已知补码的+1==原码

1、例子1

image-20230823113812773

?2、例子2

1、[y] 补码 转换成[-y]补码(前提:y是正值)

1、就是[y] 补码连同符号位在内,每位取反,末尾+1,就是[-y]补码

2、(y是负值)[y] 补码 转换成[-y]补码

1、就是[y] 补码连同符号位在内,每位取反,末尾+1,就是[-y]补码

6.1.6、移码表示法

1、因为补码很难直接判断其真值的大小,所以引入移码

2、问题:-31的补码,大于+31的补码,就很难判断大小

1、移码的定义

1、公式

image-20230823121322260

1、例子

image-20230823122503617

2、移码和补码的比较

1、当x>0,x的移码和补码符号位相反,但是数值完全相同

2、移码和补码只相差一个符号位

1、真值、补码和移码的对照表

image-20230823123737910

3、移码的特点

1、[+0]移 = [-0]移

1、内容

image-20230823125433931

2、最小真值的移码为全0

image-20230823125519007

6.2、数的定点表示和浮点表示

6.2.1、定点表示

1、定点机、小数定点机、整数定点机

1、小数点按约定方式标出

2、没有专门的硬件来标出小数点

2、定点机图示以及范围

image-20230828201148662

1、小数定点机原码:是等比数列求和

image-20230903114557665

6.2.2、浮点表示

1、问题

1、为什么在计算机要引入浮点数表示?

1、编程困难,程序员要调节小数点位置

2、数的范围很大,需要很长的机器字长

3、数据存储单元的利用率特别低

2、浮点表示的格式是什么?
3、尾数和阶吗的基值必须是2吗?基值的影响?
4、表数范围与精度和哪些因素有关?
5、为什么要引入格式化表示?
6、目前浮点数表示格式的标准是什么?

2、公式

image-20230828203348076

1、尾数绝对值小于1

2、阶码是用二进制表示;阶码是整数

3、尾数的基值是:2、4、8、16

4、其中4是两个二进制组成的数;8是三个二进制组成的数;16是四个二进制组成的数

3、浮点数的表示形式

image-20230828203139916

1、jf阶符:表示阶码的符号

2、Sf数符:数据的符号,也就是尾数的符号

4、浮点数的表示范围

1、一位表示阶符,一位表示尾符

2、四位表示阶码

3、十位表示尾数的数值部分

4、一共16位,表示

image-20230828204742184

5、最小负数(十进制下绝对值最大则小数点最右)整个绝对值最大=尾数最大*小数点最右

6、最大负数(十进制下绝对值最小则小数点最左)整个绝对值最小=尾数最小*小数点最左

7、最小正数(十进制下数值最则小数点最左)=尾数最小*小数点最左

8、最大正数(十进制下数值最大则小数点最右)=尾数最大*小数点最右

9、小数点可以移动的范围为+-(2m-1)即最左为2^-(2m-1),最右为2^(2m-1)

10、数据长度为16位,1位表示阶符,1位表示尾符,4位表示阶嘛、10位表示尾数数值部分

1、例子

image-20230828205657071

5、浮点数的规格化形式

1、基数不同,浮点数的规格化形式不同

2、r=2 :尾数最高位为1

3、r=4 :尾数最高2位不全为0

4、r=8 :尾数最高3为不全为0

5、r是基值,代表几位进制,计算机中是用2进制来存储,所以r=2时,1位表示1个数;

2、作用

1、为了保证精度,否则超出会遗失

6、浮点数的规格化

1、基数r越大,可表示的浮点数的范围越大

2、基数r越大,浮点数的精度会降低

image-20230828210435229

3、不是小数点移动

4 、例子

image-20230828210745623

1、例子6.13

image-20230830104504975

2、例子6.14

image-20230828221605974

7、机器零

1、浮点数尾数为0

1、当浮点数尾数为0,不论其阶码为何值,按机器零处理

2、阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理

1、当浮点数阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理

2、例子

image-20230828222051928

6.2.3、IEE754标准

1、组成图

image-20230828222334246

2、短实数、长实数、临时实数

image-20230828222405526

6.2.4、课后习题

1、习题16

1、题目

image-20230828233022482

6.3、定点运算

6.3.1、移位运算

1、移位运算的数学意义

1、移位的意义

1、机器语言:15相对于小数点左移2位,就相当于是小数点不变,数据移动

2、左移:绝对值扩大

3、右移:绝对值缩小

4、移位运算和加减运算配合,可以实现乘除运算

5、图示

2、算数移位的规则

1、符号位不能改变

image-20230831202304194

1、例子

image-20230831203111148

2、右移两位的那个数,最后的1被舍弃,所以是6

3、例子

image-20230831205348660

4、补码的补码+1==原码

3、算数位移的硬件实现

1、示例图

image-20230831210226922

4、算数移位和逻辑移位的区别

1、区别

image-20230831210519484

1、例子

image-20230831210712307

6.3.2、加减法运算

1、补码加减运算公式

1、公式

image-20230831212758919

1、连同符号位一起相加,符号位产生的进位自然丢掉

2、例子

image-20230831214337018

①该题出不准确,没有考虑机器位的字长

3、例子

image-20230831223448008

①补码取反+1 = -补码

4、练习1

①题目

image-20230831231651010

②答案

5、练习2

①题目

image-20230831231704473

②答案

image-20230831231728580

2、溢出判断

1、一位符号位判断溢出

1、参加两个操作的数,它们符号相同,运算结果的符号与原操作数的符号不同,即为溢出

2、硬件实现

①最高有效位的进位(一个数的最高位,它还有进位)符号位的进位为1,就是如果一个数的最高位运算有进位就溢出。

②数的最高位发生进位,和符号位进行异或(两个数值不相同),如果=1,就溢出

③两个正数、两个负数相加符会有溢出

3、例子

image-20230904202350918

2、两位符号位判断溢出

1、公式

image-20230904203205377

2、结果的双符号位相同,则没有溢出

3、结果的双符号位不同,则溢出

4、最高的符号位代表真正的符号位,第二个符号位表示运算溢出的那个数

3、补码加减法的硬件配置

1、硬件图

image-20230904203935955

1、A、X均n+1位

2、减法标记Gs控制求补逻辑

6.3.3、乘法运算

1、计算机怎么做二进制乘法运算

1、分析笔算乘法

1、图解分析

image-20230904204645362

2、符号位需要单独处理(同为正,异为负)

3、乘数的某一位是否要加被乘数(因为只有1,0两个数字)

4、4个位积一起相加

5、乘积的位数扩大一倍

2、笔算乘法改进(横式)

1、图解

image-20230904205843296

3、改进后的笔算乘法过程(竖式)

1、步骤

image-20230904212343139

1、小结

1、乘法运算 = 加+移位实现

2、n=4,加4次,乘4次;n是数值的位数

3、①乘数的末位来决定乘数是否与原部分积相加;②然后—>1位形成新的部分积,③同时乘数—>1位(末位丢弃),④空出来的高位存放部分积的低位

4、被乘数只与部分积的高位相加

5、需要三个寄存器;一个保存被乘数,其中两个需要啊具有移位功能

6、一个全加器(需要n+1位)

4、原码乘法

1、原码一位乘运算规则

1、小数和整数一样(以小数为例)

2、公式

image-20230904213708206

2、原码一位乘递推公式

image-20230904214033543

3、例子

image-20230904233315140

1、结果

image-20230904230649602

4.原码一位乘的硬件配置

image-20230904232112129

2、A寄存器,最高位是数值,不是符号位,是由低位数值相加的进位

3、被乘数在X寄存器中,且保持不变

4、Q是乘商寄存器:保存乘数的数值移位;Q的高位部分,逐渐被累加和的低位部分占据;乘数的低位部分每次移位,都会遗留移位,直到完成n次移位,所有数值位被移掉,就完成运算

5、计数器C:统计移位次数,=0结束

6、S是符号位,异或方式,给S赋值

7.Gm是乘法标志

8、控制门,当乘数最末尾是1的时候,被乘数通过控制门,传入加法器进行操作;当乘数末位是0的时候,控制门直接传人0给加法器

6.3.4、除法运算

1、笔算除法怎么做

1、分析笔算除法

1、图解过程

1、过程

image-20230906083713361

2、先看被除数和除数大小,如果不够,就上商0,被除数添0,再和右移一位除数比较

3、除完还是小,就上商,被除数每次添0,除数每次位移n+1次

4、符号用心算

5、与世俗不动低位补0,减右移一位的除数

6、上商位置不固定

2、笔算除法和机器除法比较

1、比较

image-20230906084342049

3、原码的除法

1、以小数为例,小数和整数计算过程一样

1、公式

image-20230906084712310

2、约定

1、小数定点除法x^ < y^ ;整数定点除法x>y\

2、被除数不能为0

3、除数不能为0

4、恢复余数法

1、例子

image-20230906090257827

2、步骤

①先求出x的原码和y的原码;再求出y的补码,和-y的补码

②先进行x和y符号位判断,用异或方法

③看看除数是否大于被除数(不大就上0.)

④把除数+[-y]补码,得到一个结果,判断这个结果的大小,如果是正数就上商1,如果是负数就上商0(利用y的补码进行减法得到余数,再做下面操作)

⑤得到第一个商之后,就把原来的余数恢复,+[y]补码

⑥恢复之后,把余数进行逻辑左移(逻辑移动:符号位上的也是数)

⑦左移过后,就开始+[-y]补码,(用减法得到新的余数)得到一个结果,判断这个结果的大小,如果是正数就上商1,如果是负数就上商0(利用y的补码进行减法得到余数,再做下面操作)

⑧还原余数,看余数是否为正,正数就上商1

⑨重复以上步骤,最终得到商的值

⑩其中整个过程上商5次,第一次上商溢出,余数移动4次

5、不恢复余数法(改进以上方法)(也叫加减假交替法)

1、恢复余数法运算规则

1、公式

image-20230906092109498

2、例子

1、例子

image-20230906093046417

2、步骤

①先把x的原码、y原码、[y]补码,[-y\]补码求出来

②刚开始把除数+[-y*]补码,用来做第一次是否上商的判断(如果为0就溢出)

③经过②得到余数,判断余数的正负,此时为负,就上商0

④把余数逻辑左移1位,+[y*]补码,得到新的余数

⑤把新余数判断正负,此时为正,上商1,余数需要逻辑左移1位,根据运算规则就要+[-y*]补码(相当于减法)

⑥得到新余数,判断正负,此时为正,上商1,余数需要逻辑左移1位,根据运算规则就要+[-y*]补码(相当于减法)

⑦得到新余数,判断正负,此时为负,上商0,余数需要逻辑左移1位,根据运算规则就要+[y*]补码

⑧得到新余数,判断商是否计算完毕,得到最后数值结果

⑨两个数的符号位进行异或,得到新的符号位

3、特点

1、上商n+1次

2、第一次上商溢出

3、移动n次,加n+1次

4、用移位的次数判断除法是否结束

6、原码加减交替除法硬件配置

1、ACC用于保存被除数,除数

2、X寄存器用于保存除数

3、Q寄存器保存商

4、Gd是乘法标志

5、S是符号位

6、V:是否溢出

7、AXQ均为n+1

8、图解

image-20230906094308653

6.4、浮点四则运算

6.4.1、浮点数的加减运算

1、对阶

1、求阶差

1、公式

image-20230906095537837

2、比较阶码,x阶和y阶相等,就对齐了,就可以进行尾数运算了

3、xj>yj,建议是y向xj看齐,把y阶码扩大n位,为了保证数据相同,y阶的尾数也要右移n位(减小)

4、xj<yj,建议是x向y看齐,把x阶码扩大n为,为了保证数据相同,x阶的位数也要右移n位(减小)

2、对阶的原则

1、小阶向大阶看齐

1、例子

image-20230906100511871

3、规格化

1、规格化数的定义

1、

image-20230906105433495

2、规格化数的判断

1、S>0

①真值为:0.1XXXXXX

②原码:0.1XXXXXX

③补码:0.1XXXXXX

④反码:0.1XXXXXX

2、S<0

①真值为:-0.1XXXXXX

②原码:1.1XXXXXX

③补码:1.0XXXXXX

④反码:1.0XXXXXX

3、原码:不论正数、负数,第一位数为1

4、补码:符号位和第一数位不同

5、两个特殊例子

image-20230906110053857

3、左规

1、尾数左移一位,阶码-1,直到数符和第一数位不同为止

image-20230906111636395

4、右规

image-20230906111659799

5、例子

image-20230906112641642

4、舍入

1、在对阶和右规过程中,可能出现尾数末位丢弃,引起误差,需要考虑舍入

1、0舍 1 入法
2、恒置“1”法

1、例子

image-20230906113625827

5、溢出判断

image-20230906114317632

6.4.2、浮点数的乘除运算

???6.5、算术逻辑单元

6.5.1、ALU电路

1、图示

image-20230906120208774

1、Ki取值不同,Fi不同

2、这个单元没有存储功能,就需要寄存器

3、自主学习四位ALU74181

①M=0 算术运算

②M= 1 逻辑运算

③S3~S0:不同取值,可以做不同运算

6.5.2、快速进位链

1、并行加法器

1、图解

image-20230908232237352

1、C-1表示低位从第一位送来的数据

2、串行进位链

1、进位链是影响加法器的瓶颈

2、电路图

image-20230908232744775

3、并行进位链(先行进位,跳跃进位)

1、电路图

image-20230909000024271

2、为了让进位产生非常快,且电路不复杂,有两种方法

1、单重分组跳跃进位

1、n为全加器分若干小组,小组中的进位同时产生,小组与小组之间采用串行进位

2、图解

image-20230908233620328

2、双重分组跳跃进位链

1、n位全加器分若干大组,大组中又包含若干小组,每个大组中小组的进位同时产生,大组与大组间用串行进位

2、原理图

image-20230908234018002

3、双重分组跳跃进位链—大组进位分析

1、分析

image-20230908235413123

4、双重分组跳跃进位链—大组进位线路

image-20230908235400188

5、双重分组跳跃进位链—小组进位路线

1、电路图

image-20230908235349291

6、n=16双重分组跳跃进位链

1、电路图

image-20230908235305989

2、di和ti是由参与运算的两个数据相应的位,进行与操作、或操作得到

7、n=32双重分组跳跃进位链

1、电路图

image-20230908235943933

2、di是ai和bi的余

3、ti=bi和di的或

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇