计算机组成原理:浮点数表示及运算
计算机组成原理定点数浮点数等运算方法复习
3
记作 3 ≡ + 9 (mod 12) 同理 4 ≡ + 8 (mod 12)
时钟以 12为模
5 ≡ + 7 (mod 12)
结论 一个负数加上 “模” 即得该负数的补数
一个正数和一个负数互为补数时
它们绝对值之和即为 模 数
• 计数器(模 16) 1011
1011 – 1011
0000
0000 ?
[x]补 = 27+1 +( 1011000 ) = 100000000 1011000
1,0101000
小数
[x]补 =
x 2+x
1>x ≥0 0 > x ≥ 1(mod 2)
x 为真值 如 x = + 0.1110
x = 0.1100000
[x]补 = 0.1110
[x]补 = 2 + ( 0.1100000 ) = 10.0000000
5. 移码表示法
补码表示很难直接判断其真值大小
如 十进制
二进制
补码
x = +21 x = –21
+10101 – 10101
0,10101 错 1,01011 大
x = +31
+11111
0,11111 错
x = –31
– 11111
1,00001 大
x + 25
+10101 + 100000 = 110101
加
加法 正 负
减
加法 负 正
减
加法 负 负
加
正 可正可负 可正可负
负
能否 只作加法 ?
找到一个与负数等价的正数 来代替这个负数 就可使 减 加
计算机组成原理:浮点数表示及运算
6
计算机组成原理
例:对数据12310作规格化浮点数的编码,假定1位符号位,基 数为2,阶码5位,采用移码,尾数10位,采用补码。
解:12310=11110112= 0.11110110002×27 [7]移=10000+00111 = 10111 [0.1111011000]补=0.1111011000 [123]浮= 1011 1 0 11 1101 1000 = BBD8H
对阶: [△E]补= [ Ex]补-[Ey]补=00 10+ 11 11= 00 01
y向x对齐,将y的尾数右移一位,阶码加1。 [y]补=00 10,00.0101 求和: 00.1101 + 00.0101 01.0010 [x+y]补=00 10,01.0010 右归:运算结果两符号位不同,其绝对值大于1,右归。 [x+y]补= 00 11,00.1001
0.0000001 --- 0.1111111 1/128 --- 127/128 可表示2-11*0.0001 --- 211*0.1111
设阶码2位,尾数4位
0.0000001 --- 111.1
可表示2-111*0.001 --- 2111*0.111
设阶码3位,尾数3位
0.0000000001 --- 1110000
19
(4) 结果规格化 求和之后得到的数可能不是规格化了的数 , 为了增加有效数 字的位数, 提高运算精度,必须将求和的结果规格化。 ①规格化的定义:
计算机组成原理 [袁春风]chap3_4
浮点数运算及结果 浮点数的加减运算 浮点数的乘除运算 精度考虑 IEEE754中几个特殊值的含义 浮点运算部件的设置
1
南京大学计算机系 多媒体技术研究所 袁春风
3.6.1 浮点数运算及结果
设两个规格化浮点数分别为 A=Ma . 2Ea B=Mb.2Eb ,则 A+B =[Ma + Mb.2 -(Ea-Eb)]. 2Ea (假设Ea>=Eb ) A*B =(Ma * Mb).2 Ea+Eb A/B =(Ma / Mb).2 Ea-Eb 上述运算结果可能出现以下几种情况
24
南京大学计算机系 多媒体技术研究所 袁春风
一位十进制加法器
S3 S2 S1 S0
+
+
+
C4 S3* C4* + A3 B3
25
S2* +
SБайду номын сангаас* +
S0* +
A2 B2
A1 B1
A0 B0
南京大学计算机系 多媒体技术研究所 袁春风
n位十进制加法器
n个一位十进制加法器= 一个n位十进制串行加法器
13
南京大学计算机系 多媒体技术研究所 袁春风
14
南京大学计算机系 多媒体技术研究所 袁春风
IEEE754的舍入方式
r=0
r=1 U+1
0
U
U+0.5
15
强迫为 偶数
南京大学计算机系 多媒体技术研究所 袁春风
IEEE754的舍入方式
r=1 U-1
r=0 U
U-0.5
16
0
南京大学计算机系 多媒体技术研究所 袁春风
2022考研408计算机组成原理知识:浮点数的表示和运算
计算机组成原理在408计算机综合考试中所占分值45分,说明是必考的重点内容,考生要在这部分多花时间复习。
以下是整理的的计算机组成原理知识,希望大家认真看。
2022考研408计算机组成原理知识:浮点数的表示和运算1. 浮点数的表示1)浮点数的表示范围;浮点数是指小数点位置可浮动的数据,通常以下式表示:N=M·RE其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。
在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。
因此,浮点数的机内表示一般采用以下形式:浮点数的机内表示一般采用以下形式:Ms是尾数的符号位,设置在最高位上。
E为阶码,有n+1位,一般为整数,其中有一位符号位,设置在E的最高位上,用来表正阶或负阶。
M为尾数,有m位,由Ms和M组成一个定点小数。
Ms=0,表示正号,Ms=1,表示负。
为了保证数据精度属数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值大于或等于(0.5)10。
对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。
2)IEEE754标准根据IEEE 754国际标准,常用的浮点数有两种格式:(1)单精度浮点数(32位),阶码8位,尾数24位(内含:位符号位)。
(2)双精度浮点数(64位),阶码11位,尾数53位(内含:位符号位)。
单精度格式32位,阶码为8位,尾数为23位。
另有一位符号位S,处在最高位。
由于IEEE754标准约定在小数点左部有一位隐含位,从而实际有效位数为24位。
这样使得尾数的有效值变为1.M 。
例如,最小为x1.0…0,,最大为x1.1…1。
规格化表示。
故小数点左边的位横为1,可省去。
阶码部分采用移码表示,移码值127,1到254经移码为-126到+127。
S(1E(8M(23N(符号位符号位不等于(-1)S·2-126·(0.M)符号位1-(-1)S·2E-127·(1.M)符号位255不等于NaN(符号位255无穷大0 有了精确的表示,无穷大也明确表示。
计算机组成原理10-作业解析-第6章02
+ 9999 9999 9 + 0.0000 0000 01 - 0.0000 0000 01 - 9999 9999 9
最小正数
最大负数
最小负数
真
值
0 1111111 0.111…1 (23个1) 个 正+|最大阶码 正 + |最大尾数 (规格化) 最大阶码| 最大尾数| 规格化) 最大阶码 最大尾数 1 1111111 0.100…0 (22个0) 个 最大阶码| 最小尾数|( 负+|最大阶码 正+|最小尾数 (规格化) 最大阶码 最小尾数 规格化) 1 1111111 1.100…0 (22个0) 个 最大阶码| 最小尾数|( 负+|最大阶码 负+|最小尾数 (规格化) 最大阶码 最小尾数 规格化) 0 1111111 最大阶码| 正+|最大阶码 最大阶码 1.111…1 (23个1) 个 最大尾数| 规格化) 负 + |最大尾数 (规格化) 最大尾数
最小正数
最负数
最小负数
补 码
最大正数 最小正数 最大负数 最小负数 0 1111111 1 0000000 1 0000000 0 1111111 0.111…1 (23个1) (规格化) 规格化) 个 0.100…0 (22个0) (规格化) 规格化) 个 1.011…1 (22个1) (规格化) 规格化) 个 1.000…0 (23个0) (规格化) 规格化) 个 + (2-1) - (1)
2-5
),尾数 例:设浮点数字长32位,基数 ,阶码 位(含一位阶符),尾数 位(含一位尾符) 设浮点数字长 位 基数2,阶码8位 含一位阶符),尾数24位 含一位尾符) 若阶码与尾数同时采用原码 补码表示 原码或 表示, 尾数规格化, 若阶码与尾数同时采用原码或补码表示,且尾数规格化,分别写出对应的 最大正数、最小正数、最大负数、最小负数的机器数与十进制真值 的机器数与十进制真值。 最大正数、最小正数、最大负数、最小负数的机器数与十进制真值。
计算机组成原理课件
解决: 解决:浮点数的规格化
15:03 5
§2.3 机器数的定点与浮点表示
2. 浮点数的规格化
当尾数的值不为0 当尾数的值不为0时,其绝对值应大于等于0.5,即|M|≥0.5。 其绝对值应大于等于0.5, |M|≥0.5。 大于等于0.5 而尾数又为定点小数,即|M|<1,故0.5≤|M|<1。 而尾数又为定点小数, |M|< 0.5≤|M|< 如:[1011.1101] 原=0,100;0.10111101为规格化浮点数 , ; 为规格化浮点数 而[1011.1101] 原=0,110;0.0010111101非规格化 , ; 非规格化 ------必须通过左移尾数并同时修改阶码使其变为规格化的浮点 必须通过左移尾数并同时修改阶码使其变为规格化的浮点 这种操作被称为浮点数的规格化处理。 浮点数的规格化处理 数,这种操作被称为浮点数的规格化处理。 要满足0.5≤|M| 0.5≤|M|< 要满足0.5≤|M|<1, 原码表示:尾数最高位为1 =0.1或 原码表示:尾数最高位为1,即Ms.M1 =0.1或 Ms.M1 =1.1 补码表示:正数:尾数最高位为1 补码表示:正数:尾数最高位为1,即Ms.M1 =0.1 负数:尾数最高位为0 负数:尾数最高位为0,即Ms.M1 =1.0 符号位与第一数值位相异
15:03 8
§2.3 机器数的定点与浮点表示
4.浮点数的表示范围
尾数部分给出有效数字的位数, 尾数部分给出有效数字的位数,决定了浮点数的表示 部分给出有效数字的位数 精度,尾数占的位数越大,浮点数的表示精度就越高; 精度,尾数占的位数越大,浮点数的表示精度就越高; 阶码部分指明小数点在数据中的位置, 阶码部分指明小数点在数据中的位置,决定了浮点 数的表示范围 阶码占的位数越大, 表示范围, 数的表示范围,阶码占的位数越大,浮点数的表示范围 就越大; 就越大; 通常希望数据表示的范围越大越好、精度越高越好, 通常希望数据表示的范围越大越好、精度越高越好, 但是由于计算机的存储字长是一定的,不能两者兼顾。 但是由于计算机的存储字长是一定的,不能两者兼顾。
计算机组成原理第12-浮点数的运算2
CK=TL/TK=(n·k)/(k+(n-1)) 当 n>>k 时, Ck->k 。这就是说,理论上k级线性流水线处理几乎 可以提高k倍速度。但实际上由于存储器冲突、数据相关,这个理想的加速比不一定能 达到。
[解:] (1)加法器的流水线时钟周期至少为 τ=90ns+10ns=100ns
如果采用同样的逻辑电路,但不是流水线方式,则浮点加法所需的时间为 τ1+τ2+τ3+τ4 =300ns
因此,4级流水线加法器的加速比为 Ck=300/100=3
(2) 当每个过程段的时间都是75ns时,加速比为 Ck=300/75=4
[例30] 已知计算一维向量x,y的求和表达式如下:
x
y
z
56
65
20.5
14.6
0
336
121 35.1 336
114.3 + 7.2 = 121.5
69.6
72.8
142.4
3.14
1.41
4.55
试用4段的浮点加法流水线来实现一维向量的求和运算,这4段流水线是阶码比较、 对阶操作、尾数相加、规格化。只要求画出向量加法计算流水时空图。
2.CPU之内的浮点运算器
奔腾CPU将浮点运算器包含在芯片内。浮点运算部件采用流水线设计。
指令执行过程分为8段流水线。前4 段为指令预取(DF)、指令译码(D1)、地址生 成(D2)、取操作数(EX),在U、V流水线中完成;后4段为执行1(X1)、执行2(X2) 、结果写回寄存器堆(WF)、错误报告(ER),在浮点运算器中完成。一般情况下 ,由U流水线完成一条浮点数操作指令。
计算机组成原理第4章浮点数运算方法ppt课件
jy]移 (mod 2n+1) 则直接可得移码形式。
同理,当作除法运算时,商的阶码可用下式完成: [jx]移+[-jy]补 = [jx - jy]移
11
5. 溢出判断
在浮点规格化中已指出,当尾数之和(差)出现 01.××…×或10.××…×时,并不表示溢出,只有 将此数右规后,再根据阶码来判断浮点运算结果是否 溢出。
若机器数为补码,尾数为规格化形式,并假设阶符取 2位,阶码取7位,数符取2位,尾数取n位,则它们能 表示的补码在数轴上的表示范围如下图。
浮 点 数 加 减 运 算 流 程 图
16
浮点加减法运算
1. 大型计算机和高档微型机中,浮点加减法运算是由 硬件完成的。低档的微型机浮点加减法运算是由软 件完成的,但无论用硬件实现或由软件实现加减法 运算,基本原理是一致的。
2. 浮点加减法运算要经过对阶、尾数求和、规格化、 舍入和溢出判断五步操作。其中尾数运算与定点加
23
2. 尾数运算
(1)浮点乘法尾数运算 (2)浮点除法尾数运算
24
(1)浮点乘法尾数运算
预处理:检测两个尾数中是否有一个为0, 若有一个为0,乘积必为0,不再作其他操 作;如果两尾数均不为0,则可进行乘法运 算。
相乘:两个浮点数的尾数相乘可以采用定 点小数的任何一种乘法运算来完成。
规格化:相乘结果可能要进行左规,左规 时调整阶码后如果发生阶下溢,则作机器 零处理;如果发生阶上溢,则作溢出处理。
知识点整理----计算机组成原理
一、系统概述(一)计算机发展历程(二)计算机系统层次结构1.计算机硬件的基本组成2.计算机软件的分类3.计算机的工作过程(三)性能指标1.吞吐量对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。
2.响应时间3.CPU时钟周期(Clock Cycle):又称节拍没冲或T周期,是处理操作的最基本单位,是计算机中最基本的、最小的时间单位。
主频的倒数4.主频: 即CPU内核工作的时钟频率(CPU ClockSpeed)。
CPU的主频表示在CPU内数字脉冲信号震荡的速度,与CPU实际的运算能力并没有直接关系。
5.CPI (Clock cycle Per Instruction)表示每条计算机指令执行所需的时钟周期。
6.CPU执行时间7.MIPS(Million Instruction per second)每秒执行百万条指令某机器每秒执行300万条指令,则记作3 MIPS8.MFLOPS (Million Floationg-point Operations perSecond,每秒百万个浮点操作)衡量计算机系统的主要技术指标之一。
对于一给定的程序,MFLOPS的定义为:MFLOPS=操作浮点数/(执行时间*10E6)(10E6位10的6次方)。
1.指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析指令到执行完所需的全部时间。
2.机器周期:(又称cpu周期)在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。
例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。
完成一个基本操作所需要的时间称为机器周期。
通常用内存中读取一个指令字的最短时间来规定因而又称总线周期3.在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。
脉冲信号之间的时间间隔称为周期;而将在单位时间(如1秒)内所产生的脉冲个数称为频率。
浮点数的表示和计算
浮点数的表示和计算(共9页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《计算机组成原理》实验报告12345srloop: bge $t0, 8, dex16end #16addi $t0, $t0, 1srl $t1, $s2, 28sll $s2, $s2, 4bgt $t1, 9, outcharli $v0, 1add $a0, $t1, $zerosyscallj srloopoutchar: addi $t1, $t1, 55 # change to charli $v0, 11add $a0, $t1, $zerosyscallj srloopdex16end:la $a0, msg0 # new lineli $v0, 4syscalllw $ra, 20($sp)lw $fp, 16($sp)addiu $sp, $sp, 32jr $ra四、实验结果及分析和(或)源程序调试过程1. 实验结果:本次实验我们以十进制实数形式的输入两个浮点数,在内存中以IEEE 754单精度方式表示,执行运算操作后,以十进制形式把结果输出,并且可以以二进制和十六进制的方式显示输出,下图是执行加法运算,并输出二进制形式:6下图是执行乘法操作,并输出十六进制形式:减法运算如下图:除法运算如下图:当输入错误,如除数为0时,会显示错误信息并退出,如下图:7备注:1、教师在布置需撰写实验报告的实验前,应先将报告书上的“实验题目”、“实验性质”、“实验目的”、“实验项目内容”等项目填写完成,然后再下发给学生。
2、教师在布置需撰写报告的实验项目时,应告知学生提交实验报告的最后期限。
3、学生应按照要求正确地撰写实验报告:1)在实验报告上正确地填写“实验时间”、“实验地点”等栏目。
2)将实验所涉及的源程序文件内容(实验操作步骤或者算法)填写在“实验过程或算法(源程序)”栏目中。
计算机组成原理教案(第二章)
最小负数值=-(215-1)10=(-32767)10
1
111 111 111 111 111
例6]假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格 化浮点数x,真值表示为: x=(-1)s×(1.M)×2E-128 问:它所表示的规格化的最大正数、最小正数、最大负数、最小负 数是多少? 1)最大正数 0 11 111 111 111 111 111 111 111 111 111 11
2.1.1 数据格式
计算机中常用的数据表示格式有两种
一是定点格式,数值范围有限,要求但的处理硬件比较简单。
二是浮点格式,数值范围很大,但要求硬件比较复杂。
1.定点数的表示方法
定点表示:约定机器中所有数据的小数点位置是固定不变的
(x0:符号位,0代表正号,1代表负号):
纯小数和纯整数
目前计算机中多采用定点纯整数表示,因此将定点数表示的运算 简称为整数运算。
00000001 0000000011
(2).压缩的十进制数串形式
每个数位占用半个字节(即4个二进制位),其值可用二-十编码 (BCD码)或数字符的ASCII码的低4位表示。 符号位也占半个字节并放在最低数字位之后,其值选用四位编 码中的六种冗余状态中的有关值,
1 2 3 C
(+123) 0 1 2 D
2.浮点数的表示方法
浮点表示法:把一个数的有效数字和数的范围在计算机的一个 存储单元中分别予以表示,这种把数的范围和精度分别表示的 方法,数的小数点位置随比例因子的不同而在一定范围内自 由浮动。 9 × 10-28=0.9 × 10-27
N=Re.M M :尾数,是一个纯小数。
e :比例因子的指数,称为浮点数的指数,是一个整数。 R :比例因子的基数,对于二进计数值的机器是一个常数 ,一般规定R 为2,8或16。
计算机组成原理float小数的表示
计算机组成原理float小数的表示
在计算机组成原理中,单精度浮点数(float)通常采用IEEE 754标准进行
表示。
这种表示方法将一个浮点数分为三个部分:符号位、指数位和尾数位。
符号位:表示浮点数的正负,占1位。
指数位:表示浮点数的指数,占8位(对于单精度)或11位(对于双精度)。
尾数位:表示浮点数的小数部分,占23位(对于单精度)或52位(对于
双精度)。
在IEEE 754标准中,单精度浮点数的表示形式如下:
S EEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
其中:
S:符号位,占1位。
0表示正数,1表示负数。
E:指数位,占8位。
表示为移码形式,即偏移了8位的二进制数。
M:尾数位,占23位。
表示浮点数的小数部分。
在将一个十进制数转换为IEEE 754单精度浮点数时,需要将十进制数的小数部分除以2并取整数部分作为尾数,然后根据指数和符号确定最终的二进制表示。
例如,将十进制数-转换为IEEE 754单精度浮点数的过程如下:
-可以表示为-6+(-4/2)+,其中-6是符号位(1),-4是偏移了8位的二进制数(-100),是尾数部分()。
所以,-的单精度浮点数表示为1 。
计算机组成原理第11-浮点数的运算1
x±y=(Mx2Ex-Ey±My)2Ey, Ex<=Ey
12/31/2023
信 息 科 学 与 工 程 学 院1
两数首先均为规格化数,进行规格化浮点数的加减运 算需经过5步完成: (1)对阶操作:低阶向高阶补齐,使阶码相等。 (2)尾数运算:阶码对齐后直接对尾数运算。 (3)结果规格化:对运算结果进行规格化处理(使补码尾 数的最高位和尾数符号相反)。如溢出则需右规;如不是 规格化时应左规。 (4)舍入操作:丢失位进行0舍1入或恒置1处理。 (5)判断溢出:判断阶码是否溢出,下溢则将运算结果置 0(机器0),上溢则中断。
14 12/31/2023
信 息 科 学 与 工 程 学 1院4
第二章 运算方法和运算器
2、乘、除法运算步骤 浮点数的乘除运算大体分为以下几个步骤:
1> 0 操作数检查。 2> 阶码加/减操作。 3> 尾数乘/除操作。 4> 结果规格化 5> 舍入处理。
15 12/31/2023
信 息 科 学 与 工 程 学 1院5
18 12/31/2023
信 息 科 学 与 工 程 学 1院8
第二章 运算方法和运算器
当尾数用原码表示时,舍入规则比较简单。最简便的方法,是只要尾数的最低位 为1,或移出的几位中有为1的数值位,就是最低位的值为1。 另一种是0舍1入法,即当丢失的最高位的值为1时,把这个1加到最低数值位上进 行修正,否则舍去丢失的的各位的值。 当尾数是用补码表示时,所用的舍入规则,应该与用原码表示时产生相同的处理 效果。 具体规则是:
(4) 右规
当 尾数溢出( >1)时,需 右规 即尾数出现 01. ×× …×或 10. ×× …×时
尾数 1,阶码加 1
12/31/2023
计算机组成原理浮点数运算
计算机组成原理浮点数运算
在计算机组成原理中,浮点数的运算涉及到数值的表示、加减运算等多个方面。
以下是浮点数运算的基本过程:
1. 对阶:在进行浮点数运算时,需要先对参与运算的浮点数的阶码进行对齐,即比较两个阶码的大小,将阶码较小的数向右移动,使得两个数的阶码相等。
2. 尾数运算:对阶完成后,进行尾数的加减运算。
尾数通常使用补码表示,加减运算规则与定点数的补码加减运算规则相同。
3. 结果格式化:根据尾数运算结果的符号和数值大小,确定最终结果的格式。
如果尾数的结果为正,则结果的格式与源码相同;如果尾数的结果为负,则结果的格式与补码相同。
浮点数的范围和精度由阶码和尾数的位数决定。
阶码的位数能够决定数的范围,尾数的位数决定数的有效精度。
在实际应用中,需要根据具体需求选择合适的浮点数表示方式和运算方法。
(完整版)计算机组成原理知识点总结
第2章数据的表示和运算主要内容:(一)数据信息的表示1.数据的表示2.真值和机器数(二)定点数的表示和运算1.定点数的表示:无符号数的表示;有符号数的表示。
2.定点数的运算:定点数的位移运算;原码定点数的加/减运算;补码定点数的加/减运算;定点数的乘/除运算;溢出概念和判别方法。
(三)浮点数的表示和运算1.浮点数的表示:浮点数的表示范围;IEEE754标准2.浮点数的加/减运算(四)算术逻辑单元ALU1.串行加法器和并行加法器2.算术逻辑单元ALU的功能和机构2.3 浮点数的表示和运算2.3.1 浮点数的表示(1)浮点数的表示范围•浮点数是指小数点位置可浮动的数据,通常以下式表示:N=M·RE其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。
在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。
浮点数的机内表示浮点数真值:N=M ×2E浮点数的一般机器格式:数符阶符阶码值 . 尾数值1位1位n位m位•Ms是尾数的符号位,设置在最高位上。
•E为阶码,有n+1位,一般为整数,其中有一位符号位EJ,设置在E的最高位上,用来表示正阶或负阶。
•M为尾数,有m位,为一个定点小数。
Ms=0,表示正号,Ms=1,表示负。
•为了保证数据精度,尾数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值大于或等于0.5。
对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。
浮点数的机内表示阶码通常为定点整数,补码或移码表示。
其位数决定数值范围。
阶符表示数的大小。
尾数通常为定点小数,原码或补码表示。
其位数决定数的精度。
数符表示数的正负。
浮点数的规格化字长固定的情况下提高表示精度的措施:•增加尾数位数(但数值范围减小)•采用浮点规格化形式尾数规格化:1/2≤M <1 最高有效位绝对值为1浮点数规格化方法:调整阶码使尾数满足下列关系:•尾数为原码表示时,无论正负应满足1/2 ≤M <1即:小数点后的第一位数一定要为1。
计算机组成原理定点数、浮点数等运算方法复习
大
正确
(1) 移码定义 [x]移 = 2n + x(2n>x ≥ 2n)
x 为真值,n 为 整数的位数 移码在数轴上的表示
0 2
n
2
n+1
–1 [x]移码
–2
n
0
2 –1
n
真值
如
x = 10100 [x]移 = 2 + 10100 = 1,10100 x = –10100 [x]移 = 25 – 10100 = 0,01100
(3) 真值、补码和移码的对照表
真值 x ( n =5 ) -100000 - 11111 - 11110 - 00001 ± 00000 + 00001 + 00010 + 11110 + 11111 … …
[x]补
100000 100001 100010 111111 000000 000001 000010 011110 011111 … …
+ 0.1011 – 0.1011 + 1100 – 1100
0 1011
小数点的位置
1 1011
小数点的位置
0 1100
小数点的位置
1 1100
小数点的位置
2. 原码表示法
(1) 定义
整数
[x]原 =
x 为真值 如 x = +1110
x = 1110
0, x 2
n
2n > x ≥ 0 0 ≥x> 2
和数值部分隔开
(4) 求补码的快捷方式
设x= 1010 时
4+1
1010 则[x]补 = 2 = 100000 1010 = 1,0110 又[x]原 = 1,1010
计算机组成原理学习(三)整数比较,浮点数的表示
计算机组成原理学习(三)整数⽐较,浮点数的表⽰浮点数的表⽰可能是第⼀个劝退点,第⼀遍直接看视频看不懂,因为移码是在前⾯讲的,和后⾯没联系起来,讲到后⾯太快了⼀时半会理不清,看书却⼀下⼦明⽩了。
1.基于补码的整数⽐较C语⾔程序中,数据后⾯带上个“u”或“U”可表⽰数据是⽆符号的,⽤⽆符号去解释数据。
下⾯的整数判断表达式会出现与常识相违背的结果。
(32位机器,基于补码编码)第⼀条,左边的0的机器数是32位的⼀串0,右边的机器数也是⼀串0,加上U⽤⽆符号解释⼀样是0,所以结果为真。
第⼆条,-1的机器数是32位全部为1,0是32位0,默认带符号⽐较,-1的机器数的真值为-1,所以⽐0⼩,结果为真。
第三条,0带了U,表达式会被解释为⽆符号来⽐较,-1机器数的真值变为2^32-1,远⽐0⼤,结果为假。
第四条,左边的机器数为⾸位为0、其余为1的序列,右边的机器数为⾸位为1,其余为0的序列,按带符号⽐较,左边真值为最⼤正数2^31-1,右边为最⼩负数-2^31,所以结果为真。
第五条,带了U⽤⽆符号⽐较,左边正数不受影响,真值仍然是2^31-1,右边真值变为2^31,所以结果为假。
第六条,左边真值⼀样不受影响,右边先是带符号,真值解释为2^31,⼜强转成int,即带符号,真值变成最⼩负数-2^31,所以结果为真。
第七条,带符号⽐较,左边真值为-1,右边真值为-2,结果为真。
第⼋条,左边强转成⽆符号,真值变成2^32 -1,右边也同理变成2^32 -2,所以结果为真。
发现,机器数按⽆符号去解释,相当于我们平时理解的字⾯意思,也就是不管编码⽅式,真值就是⼆进制正常换算成⼗进制的值。
2.浮点数的编码实数是包括整数部分和⼩数部分的数,那啥叫“浮点数”?啥叫“定点数”?此处的点指的是⼩数点。
如果我⽤8位去存储实数,假如规定了第⼀位存符号,后3位存整数,最后4位存⼩数这种编码⽅式,那么很明显⼩数的精度只能到后四位,⼩数点是固定不变的,这叫“定点数”。
2-5浮点运算
对阶过程应该是小阶对大阶 尾数右移
计算机组成原理 Slide 6
•对阶过程
先求两数阶码 Ex 和 Ey之差,即△E = Ex-Ey
若△E = 0, 若△E > 0, 表示 Ex=Ey Ex>Ey
若△E < 0,
Ex<Ey
通过尾数的移动来改变 Ex或Ey,使其相等.
• 对阶原则 阶码小的数向阶码大的数对齐; 小阶的尾数右移,每右移一位,其阶码加1。
10 11
计算机组成原理 Slide 10
求和之后得到的数可能不是规格化了的数, 为了增加有效数 字的位数, 提高运算精度,必须将求和的结果规格化. ①规格化的定义:
采用原码: 正数: S=0.1 ×××…× 负数: S=1.1 ×××…× 采用双符号位的补码: 对正数: 对负数:
1 S 1 2
Ex-Ey<0
X阶码加2
Ex<Ey 小阶对大阶,
X尾数右移2位
解:将x,y转换成浮点数据格式
[x]浮 = 00 101, 00.11011011 [Y]浮 = 00 111, 11.01010011+1 00 111, 11.01010100
计算机组成原理 Slide 23
负
正
图中a,b之间的阴影部分,对应阶码小于128的情况,叫做浮点 数的下溢。下溢时.浮点数值趋于零,故机器不做溢出处理, 仅把它作为机器零。 图中的A、B两侧阴影部分,对应阶码大于127的情况,叫做 浮点数的上溢。此刻,浮点数真正溢出,机器需停止运算, 作溢出中断处理。一般说浮点溢出,均是指上溢。 可见,浮点机的溢出与否可由阶码的符号决定: 阶码[j]补=01, 为上溢,机器停止运算,做中断处理;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
左规 左规 右规 右规
例:两浮点数 x=0.1101 210 , y=(0.1011) 201, 求x+y。
解: [x]补=00 10,00.1101
[y]补=00 01,00.1011
对阶: [△E]补= [ Ex]补-[Ey]补=00 10+ 11 11= 00 01
y向x对齐,将y的尾数右移一位,阶码加1。
(3) 尾数求和运算
尾数求和方法与定点加减法运算完全一样。 对阶完毕可得: [x]补=00 11, 00.0011
[y]补=00 11, 11.0110
对尾数求和: 00.0011 + 11.0110 11.1001
即得: [x+y]补=00 11, 11.1001
(4) 结果规格化
求和之后得到的数可能不是规格化了的数, 为了增加有效数 字的位数, 提高运算精度,必须将求和的结果规格化。
=(-1)1×(1 + 0.1000 0000 0000 0000 0000 000)×2126-127
s=1,E=12610 = 011111102,F=1000 … 000。
1 011,1111,0 100,0000,0000,0000,0000,0000 B F 4 0 0 0 0 0H
单精度浮点数编码格式
对阶过程小阶的尾数右移,每右移一位,其阶码加1(右规)。
210*(0.11000)+28*(0.00110) 大阶对小阶 210*(0.11000)--28*(11.000) 11.000+0.00110 ????????? 小阶对大阶 28*(0.00110)--210*(0.00001) 0.00001+0.11000=0.11001
浮点数的表示范围 负下溢 正下溢
负上溢
- 最 负数 最 0
小
大
负
负
数
数
N=2E×M
|N|→∞ 产生正上溢或者负上溢
|N|→0 产生正下溢或者负下溢
正数
最 小 正 数
正上溢
+
最 大 正 数
机器字长一定时,阶码越长,表示范围越大,精度越低 浮点数表示范围比定点数大,精度高
8位定点小数可表示的范围
IEEE754 规格化浮点数表示范围
格式
最小值
最大值
单精度
Emin=1, M=0, 1.0×21-127 = 2-126
Emax=254, f=1.1111…, 1.111…1×2254-127 = 2127×(2-2-23)
双精度 Emin=1, M=0, 1.0×21-1023 =2-1022
计算机组成原理
浮点数表示及运算
一、浮点数的表示
9×10-28 = 0.9 ×10-27 2×1033 = 0.2 ×1034
任意一个十进制数 N 可以写成
N=10E·×M (十进制表示)
计算机中一个任意进制数 N 可以写成
N=Re×m = 2E×M = 2±e× (±m)
m :尾数,是一个纯小数。 e :浮点的指数, 是一个整数。
(1) 0 操作数检查
(2) 对阶
使二数阶码相同(即小数点位置对齐),这个过程叫作对阶。
• 先求两数阶码 Ex 和 Ey之差,即△E = Ex-Ey
若△E = 0,表示 Ex=Ey
若△E > 0,
Ex>Ey
若△E < 0,
Ex<Ey
通过尾数的移动来改变Ex或Ey,使其相等。
பைடு நூலகம்
• 对阶原则
阶码小的数向阶码大的数对齐;
如运算结果出现 0.0XXX或 1.1XX 必须左归 左归时最低数据有效位补0 右归时连同符号位进位位一起右移 左归时,阶码作减法,右归时,阶码作加法
规格化方法
00.0XXXX -- 00.1XXX0 11.1XXXX -- 11.0XXX0 01.XXXXX -- 00.1XXXX 10.XXXXX -- 11.0XXXX
0100 0001 1010 0100 1100 0000 0000 0000= (41A4C000)16
例:将十进制数-0.75表示成单精度的IEEE 754标准代码。 解:-0.75 = -3/4 = -0.112 = -1.1×2-1
=(-1)1×(1 + 0.1000 0000 0000 0000 0000 000)×2-1
阶符采用隐含方式,即采用移码方法来表示正负指数。
规格化浮点数的真值
31 30 23 22
0
32位浮点数格式:
SE
M
一个规格化的32位浮点数x的真值为:
x = (-1)s (1.M) 2E-127
e =E – 127
一个规格化的64位浮点数x的真值为:
x = ( –1)s×(1.M)×2E-1023 这里e是真值,E是机器数
[y]补=00 10,00.0101
求和:
00.1101
+ 00.0101
01.0010
[x+y]补=00 10,01.0010
右归:运算结果两符号位不同,其绝对值大于1,右归。 [x+y]补= 00 11,00.1001
(5) 舍入处理
在对阶或向右规格化时, 尾数要向右移位, 这样, 被右移的尾数 的低位部分会被丢掉, 从而造成一定误差,因此要进行舍入处理。
0.0000001 --- 0.1111111
1/128 --- 127/128
设阶码2位,尾数4位 可表示2-11*0.0001 --- 211*0.1111
0.0000001 --- 111.1
设阶码3位,尾数3位 可表示2-111*0.001 --- 2111*0.111
0.0000000001 --- 1110000
解:首先分别将整数和分数部分转换成二进制数: 20.59375=10100.10011
然后移动小数点,使其在第1,2位之间 10100.10011=1.010010011×24 e=4
于是得到: e =E – 127
S=0,E=4+127=131=1000,0011,M=010010011 最后得到32位浮点数的二进制存储格式为
R :基数,对于二进计数值的机器是一个常数,一般规定R 为2,8或16
E0 E1 E2 … … … Em M0 M1 M2 … … … Mn
阶符
阶值
尾符 尾数值
一个机器浮点数由阶码和尾数及其符号位组成: 尾数:用定点小数表示,给出有效数字的位数,决定了浮点数的表示精度 阶码:用定点整数形式表示,指明小数点在数据中的位置,决定了浮点数 的表示范围。
1.隐藏位技术
原码非0值浮点数的尾数数值最高位必定为 1,则在保存浮点数到内存前,
通过尾数左移, 强行把该位去掉, 用同样多的位数能多存一位二进制数, 有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。
当然,在取回这样的浮点数到运算器执行运算时,必须先恢复该隐藏位。
2.阶码用“移码”偏移值127而不是128
指数e=阶码-127=-01111111 =00000011=(3)10 包括隐藏位1的尾数: 1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)s×1.M×2e
=+(1.011011)×23=+1011.011=(11.375)10
例: 将十进制数20.59375转换成32位浮点数的二进制格式来存储。
二、浮点数规格化
浮点数是数学中实数的子集合,由一个纯小数乘上一个指数 值来组成。
一个浮点数有不同的表示:
0.5; 0.05101 ; 0.005 102 ; 50 10-2 为提高数据的表示精度,需做规格化处理。
在计算机内,其纯小数部分被称为浮点数的尾数,对非 0 值的浮点数,要求尾数的绝对值必须 >= 1/2,即尾数域的最高 有效位应为1,称满足这种表示要求的浮点数为规格化表示:
Emin=1, Emax=254/2046
例:若浮点数 x 的二进制存储格式为(41360000)16,求其32位 浮点数的十进制值。
解: 0100,0001,0011,0110,0000,0000,0000,0000 数符:0 阶码:1000,0010 尾数:011,0110,0000,0000,0000,0000
Emax=2046, f=1.1111…,1.111…1×22046-1023 =21023×(2-2-52)
负下溢出 零
负上溢出 可表示负数范围
正下溢出 可表示正数范围 正上溢出
-(1-2-23) 2127
-0.52-128 0 0.52-128
数轴
(1-2-23) 2127
浮点加减法运算
设有两个浮点数x和y, 它们分别为:
0.1000101010
把不满足这一表示要求的尾数,变成满足这一要求的尾数 的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改 阶码实现。
规格化目的: 为了提高数据的表示精度 为了数据表示的唯一性 尾数为R进制的规格化: 绝对值大于或等于1/R
二进制原码的规格化数的表现形式:
正数 0.1xxxxxx 负数 1.1xxxxxx 补码尾数的规格化的表现形式:尾数的最高位与符号位相反。
符号位 0/1 0/1 0 1 0/1 0/1 0/1
阶码 255 255 255 255 1~254
0 0
尾数 非零1xxxx 非零0xxxx
0 0
f f (非零)
0
表示
NaN Not a Number sNaN Signaling NaN +∞ -∞ (-1)S× (1.f) 2 × (e-127) (-1)S× (0.f) 2 × (-126) +0/-0