导图社区 计算机考研第二章 数据的表示和运算
计算机考研计算机组成原理,整理了数制和编码、定点数的表示、运算电路和方法等内容,知识点系统且全面,希望对大家有用。
编辑于2024-05-04 21:21:26第二章 数据的表示和运算
数制和编码
进位计数制
基数:
N进制的基数为 0 ~ N-1
为何选择二进制
使用有两个稳定状态的物理器件就可以表示二进制的每一位了
逻辑运算方便,0,1对应逻辑真假
逻辑门电路设计方便
二进制、八进制、 十六进制、十进制转换
注意八进制和十六进制要补位 整数部分:在最左边添加0 小数部门:在最右边添加0
任意制转十进制
各个数位的数码*权重之和
举例
十进制转任意进制
整数:除基取余法 (先取的余是整数的低位)
商为0,算法结束
小数:乘基取整法 (先取的整是小数的高位)
小数部分为0,算法结束
注意:整数是可以连续的,但小数是离散的,并不是每个十进制小数都可以准确的用二进制表示
真值、机器数
真值:
符合人类习惯的数字(带符号的数)
机器数:
数字在机器中代表的意思(符号数字化)
例如:真值 +5 即机器数 0,101
定点数的表示
考频:低
15、18、21、22
前提:用n+1位表示机器字长
无符号整数
unsigned int、 unsigned long
无符号数没有小数
【没有符号位】,有n+1个bit,则数的表示范围为:
指针、表示地址
运算
减法运算
加法运算
从最低位开始,按位相加,并往更高位进位
电路
定点数
定义:小数点位置是固定的
即小数点前面和后面的位数是固定的
定点小数
只表示正的、负的小数
定点整数
只表示正的、负的整数
浮点数 --- 小数点位置是不固定的
有符号数
原码
形式
第一位为符号位,其余位为数值位,要么表示小数要么表示整数
表示范围
整数
整数
存在 +0 和 -0,所以正负数对半分
小数
纯小数
小数的表示是离散的,正负对半分
作用
最容易理解的表示方式
定点原码小数来表示浮点数的尾数部分
原码相加运算不成立哦(符号位不能参与运算)
举例:
整数
x1 = +1110
[x1]原 = 0, 0001110
x2 = -1110
[x2]原 = 1, 0001110
小数
x1 = +0.1101
[x1]原 = 0.1101000
x2 = -0.1101
[x2]原 = 1.1101000
补码
真值与机器数关系
定点整数
定点小数
形式
正数的补码:不变 负数的补码:反码 + 1
负数:原码转为补码的技巧是【尾数】取反再+1(除符号位)
注意:
补码中只存在一个 0
+0 的补码: 0 0000 000
-0 的补码:【 1 0000 000按位取反再+1 】 -> 【0 0000 000】和+0 一致了
1 0000 000是无法通过原码变化获得的,故规定在整数中表示 -2^n,在小数中表示 -1
因为1 0000 000 = 0 0000 000按位取反 + 1,但是 +0 是正数,没有这个运算规则
原码 -> 补码:(负)按位取反 + 1 补码 -> 原码:(负)按位取反 + 1 符号位不变
为什么:
按位取反 + 1 的快速做法:从右往左,遇到第一个 1 右边的所有bit不动,把这个1左边的全部数值位bit取反
表示范围
整数
没有 -0 了,负数可以到 -2^n 了
原码范围:
存在 +0 和 -0,所以正负数对半分
小数
没有 -0 了,负数可以到 -1 了
原码范围:
小数的表示是离散的,正负对半分
注意:补码的数值不能充当位权
运算
减法运算
求“变补”快速的方法:从右到左找到第一个1,这个1左边的“所有位”全部按位取反
加法运算
从最低位开始,按位相加(符号位参与运算),并往更高位进位
作用
补码相加减的运算是成立的
所以在现代语言(例如C++)中都是采用的补码来表示数
一切加减法都可以写作两个补码数相加
举例:
整数
x1 = +1110
[x1]补 = 0, 0001110
[x1]原 = 0, 0001110
x2 = -1110
[x2]补 = 1, 1110010
[x2]原 = 1, 0001110
小数
x1 = +0.1101
[x1]补 = 0.1101000
[x1]原 = 0.1101000
x2 = -0.1101
[x2]补 = 1.0011000
[x2]原 = 1.1101000
反码
形式
从原码转化而来,如果原码为正,反码不变。如果原码为负,则反码的数值位是原码的取反
表示范围
和原码完全一致
作用
作为”原码 -> 补码“的中间态
若是想通过反码得出十进制,则先转为原码再转为十进制
举例:
整数
x1 = +1110
[x1]反 = 0, 0001110
[x1]原 = 0, 0001110
x2 = -1110
[x2]反 = 1, 1110001
[x2]原 = 1, 0001110
小数
x1 = +0.1101
[x1]反 = 0.1101000
[x1]原 = 0.1101000
x2 = -0.1101
[x2]反 = 1.0010111
[x2]原 = 1.1101000
移码 (只表示整数)
定义形式:移码=真值+偏置值
移码 = 补码首位取反(此时偏置值为2^n );
表示范围
和补码一致
作用
不难发现,移码中,机器数和真值的单调性是一致的,即真值越大,其对应的移码越大,因此移码很适合用来比大小。
机器数随真值的单调性
原码
反码
补码
移码
运算电路和方法
基本门电路
优先级:与>或(类比乘法,加法);助记: 与类比找女朋友,既漂亮也有钱 或类比降低标准,漂亮或者有钱
(补充)门电路和摩根定律
助记: 同或类比男女进澡堂; 异或类比性别相同能不能生孩子
一位全加器
逻辑符号(简化)
结构
三个输入
Ai
第一个加数
Bi
第二个加数
C(i-1)
上一次运算后传入的进位数
两个输出
Ci
本次运算后的进位数 (输入中至少两个1) 两个本位都为1,或其中有一个1 且来自低位的进位是1
Si
本次运算的结果 (输入中有奇数个1时为1,用异或)
计算公式
串行加法器
串行加法器:循环使用一位全加器
如果操作数长n位,加法就要分n次进行,每次产生一位和,并且串行逐位地送回寄存器。
问题:每一位的运算必须基于上一次的运算才能进行,非常浪费时间
串行进位加法器
把多个全加器串在一起,和串行加法器问题一致,速度一样的慢
串行进位的并行加法器:把n个全加器串接起来,就可进行两个n位数的相加。(多米诺骨牌)
串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是【逐级形成】。 计算速度取决于进位产生和传递的速度
并行进位加法器
理论依据
相互间的进位没有依赖关系,只要同时到达,可以同时生成C1~C3
先行进位、超前进位 同时进位 (进位产生函数)
四位CLA部件/CLA电路
缺点:随着加法器的位数的增加,电路结构复杂
四位全先行进位加法器
简化
把几(4)个加法器串在一起,这样可以并发的计算4bit的数据
多级并行进位加法器
带标记加法器 (补码,无符号整数适用)
标志位的生成
PSW用来存放两类信息:
一类是体现当前指令执行结果的各种状态信息,称为状态标志,如有无借位进位(CF位)、有无溢出(OF位)、结果正负(SF位)、结果是否为零(ZF位)、奇偶标志位(PF位)等;
另一类是存放控制信息,称为控制状态,如允许中断(IF位),跟踪标志(TF位),方向标志(DF)等。有些机器中将PSW称为标志寄存器FR(Flag Register)。
带标记加法器逻辑电路
Cn和Cout一样
ALU为组合逻辑电路
组合逻辑电路:其输出仅取决于当前输入的组合,不依赖于先前的输入,没有存储单元只包含了电路。
时序逻辑电路:既有电路又有存储单元
ALU的基本结构
多路选择器、三态门
多路选择器
k个输入,m要求
一位ALU的结构(有三种操作)
三态门
运算器的组成部分
ALU
算数运算、逻辑运算
总线
状态寄存器
存储进位信息
累加器
通用寄存器组
考频:低
18(标志位)、20大(ALU)
定点数的加减法
考频:低
(10、13、14、18)溢出
【加减法】 (原码补码)
原码的加减运算
运算规则:
1. 使用补码来进行加法,符号位参与运算
2. 如果是 A - B,改为补码形式的 A + (-B)来进行计算
运算电路:
标志位
CF:
无符号使用
含义:表示无符号数运算时的进位/借位,判断发生溢出
进位位,运算进位了CF = 1,否则 CF = 0
加法运算Cin = 0,Cout = 1说明出现了进位
减法运算Cin = 1,Cout = 0说明出现了借位,就是A比B小
当Sub=0,表示做加法操作,此时Cin==Sub=0 当Sub=1,表示做减法操作,此时Cin==Sub=1
SF:
有符号使用
正数为0,负数为1
最高位的本位和
ZF:
有符号、无符号均可
F输出全为0,ZF = 1
OF:
有符号使用
溢出的含义:
原码、反码、补码计算器
解决办法
通过符号扩展来进行溢出控制,例如 int (4B) -> long(8B),扩展方法和算术位移一致
整数
小数
三种判断方法
加减时判断溢出
①负数+负数=正数 ②正数+正数=负数
直接判断真值
单符号数
判断最高进位与次高进位是否一致,若一致则OF=0,否则OF=1
双符号位
最高位始终代表真实符号位,若不一致则溢出,则OF=1
定点数的移位运算
逻辑运算
与、或、非三大基本运算
逻辑移位
不考虑符号位,一般用于无符号数的移位
逻辑左移:低位补0,高位移出 逻辑右移:高位补0,低位移出
例如,寄存器的内容为10001110,逻辑左移1位为0001 1100,逻辑右移1位为0100 0111。
作用:
用于拆分和定位一个二进制中对应区间bit的数值,例如可以通过逻辑移位获得24bit RGB二进制数的R、G、B分别的数值
算术移位
考虑符号位,一般用于有符号位的移位 计算机中有符号整数都是补码表示的,一般采用补码算数移位
补码
规则:左移时,高位移出,低位补0 右移时,低位移出,高位补符号位 《袁春风》
一般用于定点整数的移位
例如:补码1001 左移结果0010,右移结果1100 补码0101 左移结果1010,右移结果0010 <----- ----- >
总 结
《唐朔飞》,符号位不变,数值位补↑
一般用于浮点小数的移位
原码
正数负数,一律添 0
反码
正数全 0,负数全 1
作用:
算术位移可以模拟乘法运算
移位的精度:
往右移动会丢失精度
若低位的1移出,则影响精度
例:0011(3) 右移一次 0001(1),而 3 ÷ 2 = 1.5
往左移动造成溢出
移位时判断溢出
对于无符号数的逻辑左移,若高位的1被移出,则会发生溢出
例如,寄存器的内容为10001110,逻辑左移1位为0001 1100,对于无符号数来说发生溢出。
对于有符号数的算数左移,若移出的高位不同于移位后的符号位,即左移前后的符号位不同,则发生溢出
例: 1000(-8) 左移一次 0000 (0), 出现严重误差
注意
由于原、反、补码位数有限,因此某些时候算数移位不能精确等效乘法、除法
循环移位
带进制位和不带进制位
CF中不是0就是1
带进位位:大循环
不带进位位:小循环
【乘法运算】
原补码乘法,区别在于原码只需看MQ最后一位,补码需要看MQ的辅助位和最后一位
引入: 手算模拟
只需判断乘数的每一位是0/1, 是1,则取被乘数,是0,则全取0即可
问题引入
ACC:乘积高位
MQ:乘数、乘积低位
X:被乘数
X * MQ = ( ACC, MQ )
最开始ACC是0,然后通过多次加法+移位把低位移动到了MQ中,ACC中存放的是高位。
X * MQ
X是被乘数,MQ是乘数
前放X,后放MQ
(X*Y)
【原码乘法】 符号另算。多次累加,通过MQ最后一位来判断是否让ACC加X,每次都让右移,最后结果ACC为高位,MQ为低位
n次位移,n次运算
硬件构成
ACC有n+1位,MQ也有n+1位(含一位符号位)
加法规则:
MQ的最低位为0,则ACC = ACC + 0
MQ的最低位为1,则ACC = ACC + X
移位规则:
统一采用逻辑右移位(只补0)
因为是原码,所以逻辑算术移位没区别
运算流程:
已知运算 x * y,x为负,y为正
其中x和y的符号位为一位,数值位为n位
0. 确定最终符号位为 1,把【x的符号改为0】
符号位的计算:对两个数的符号位进行异或运算即可
1. 把x存入X寄存器中,把y存入到MQ寄存器中,清空ACC
此时,MQ的最低位就应该是被乘数X应该进行操作
2. 进行加法,进行移位
此时的右移有两个作用:
A. 使得MQ的最低位指明了下一次需要进行操作 B. 下次一次的加法是和上一次的结果“错位”相加
3. 重复 1~2 的步骤 n 次。 最后的结果就是(ACC, MQ)中,其中MQ的最末位舍弃,ACC的第一位改为符号位
ACC的全部 + MQ的前n位
x * y 最后的结果最多为 2n 位,MQ和ACC都是n+1位寄存器,MQ的最末位舍去
采用的是原码一位乘法,还有二位乘法,不拓展了
【补码乘法】 符号参与运算,双符号位,MQ多一个辅助位,ACC是+/- X或者不变看MQ后两位之差,然后位移。【最后还有一次加法】
n次位移,n+1次运算
硬件构成
MQ为 n+2 位(因为多了一位辅助位)
同样ACC和X都是n+2位(因为CPU要保证寄存器长度一致),那么就可以采用双符号位了
MQ有辅助位,ACC、X均为双符号位, MQ单符号位
加法规则:
根据MQ的最低位和MQ的辅助位(在硬件中MQ的最低位为MQ的倒数第二位,辅助位为MQ的倒数第一位)
辅助位 - 最低位 = 1 , ACC = ACC + x
辅助位 - 最低位 = 0 , ACC = ACC + 0
辅助位 - 最低位 = -1, ACC = ACC + (-x)
x的补码到-x的补码是由另外的辅助电路完成的
移位规则:
采用补码的算术右移位
正的补0,负的补 1
运算流程:
已知运算 x * y,x为负,y为正
其中x和y的符号位为一位,数值位为n位
1. x扩展为双符号直接存入X,y不扩展符号存入MQ中,清空ACC(MQ辅助位初始为0)
2. 根据加法和移位的规则进行加法运算
3. 重复 1~2 的步骤n次
4. 对3的结果再进行一次加法运算
5. 最后的结果就是(ACC, MQ)
ACC的全部 + MQ的前n位
整数运算和小数运算的符号位位置相同
但是整数运算的小数位在MQ的第n位上,小数运算的小数点在第1/2位上(看是原码还是补码)
乘法电路
右移和加法
无符号数
自己尝试一下~
阵列乘法器,可以同时得到多位的乘积
有符号数
补码一位乘法逻辑结构图
注意事项:这里电路(MIPS)中的【补码】乘法是单符号位的,n次加移就够了
上面学的双符号位【补码】乘法要n+1次加法、n次移位
【除法运算】
硬件检测
定点小数应是除数 > 被除数
如果第一步的商运算后的结果为 1,那么就说明除数 <= 被除数,无法用定点小数来进行计算,故报错
前提
引入
ACC:被除数、余数
MQ:商
X:除数
ACC ÷ X = MQ ... ACC
最开始MQ是清零的,每次算得的结果都是放在MQ的最后一位中,然后不断左移,最后ACC里面存的结果就应该是“余数”
R ÷ Y = Q...R
R: remainder,Y: ...,Q: quotient
【原码除法】 先商一,然后相减后发现是负数了,再处理,逐渐左移,最后MQ是商,ACC是余数
恢复余数法
硬件构成
ACC有n+1位,MQ也有n+1位
运算流程:
单独处理符号位
已知运算 x ÷ y
ACC ÷ X
0. 把 y 写入到X,把 x 写入到ACC,MQ清零
1. 算法默认商 1,MQ的最低位置为 1,进行减法操作:ACC = ACC + (-X)
如果最后的ACC的结果为负,则说明此时商0,则把MQ的最低位改为 0,同时ACC = ACC + X
“恢复余数法”
2. 把(ACC, MQ)的值全部逻辑左移一位
此时的左移有两个作用:
A. 使得ACC被除数*2 B. 有一位商已经确定在MQ中了
3. 如果x和y的数值位都为n,那么需要经过【n + 1】次减法运算,n 次移位运算
如果最后一次商 1 还是负数,则应该再恢复余数一次
MQ最后存放了商,ACC存放了余数,【修改MQ的符号位】
加减交替法
优化思路:
不进行恢复余数的操作,将操作更改如下
计算机每次都默认商 1,然后进行补码减法,对于减法后的结果,如果结果为正,则移位进行下一次商操作。
如果商 1 结果为负,则将 (ACC, MQ) 的值左移一位,在加上X的值(此处的X是ACC,MQ,X的那个X)
把 (a + b) x 2 - b
首先恢复余数(+b),然后向左移位一次(x2),然后进行下一次的商 1 相减设置(-b)
简化为了 2 x a + b
其他特点:
最后算完MQ和ACC的时候如果ACC的内容是负数,还是要 +X 恢复一下
加法进行了 n + 1/n + 2 次,而左移进行了 n 次
【补码除法】 符号位参与运算,如果X和ACC异号,则左移后相加,如果X和ACC同号,则左移后相减
原码除法采用默认商 1
如果结果为正:左移 + X
如果结果为负:左移 - X
随后进行下一次的运算
补码除法在商的时候根据ACC和X的符号进行判断
如果ACC和X的符号不同,则商0
(ACC, MQ)左移一位,+ X
如果ACC和X的符号同号,则商 1
(ACC, MQ)左移一位, - X
总结
除法电路
R ÷ Y = Q...R / ACC ÷ X = MQ ... ACC
复习:Q中写值0或1,然后左移
定点小数
定点整数
总结:
乘法、除法基本结构:
ALU:实现加减法,能够求[-补码]
具有逻辑/算术移位功能的寄存器
可以控制左右移/加减/读写信号发出的控制逻辑
计数器Cn:记录还剩余几轮处理
考频:低
18
定点数的转换
考频:高
09、12*2、16、18*2、19、20、11大
C语言中的整型数据类型
char
8位二进制构成,采用无符号数表示,真值0-255
作用:用来表示字符
short
16位二进制构成,默认补码表示、默认为有符号数
int
32位二进制构成,默认补码表示,默认为有符号数
有符号数和无符号的转换
强制类型转化
原则:不改变变量的机器数,只改变机器数解释方式
例如:short->unsigned short x采用补码表示,y采用无符号表示
例如:unsigned short->short x采用无符号数表示,y采用补码表示
注意:若同时有无符号数和有符号数参与运算,C语言标准规定按无符号数进行运算
不同字长整数之间的转换
长整数变短整数
高位截断,低位保留
短整数变长整数
低位部分复制,高位部分扩展
原数字是无符号数
零扩展
高位部分用0填充
原数字是有符号数
符号扩展
高位部门用原数字符号位填充
注意:char为8位无符号整数,转换为int型高位补0即可
总结
数据存储
按字节编址
即每个字节对应1个地址 每次访存只能读/写1个字
大小端模式
大端模式
最高有效字节(MSB)放在低地址部分
符合人类阅读习惯
小端模式
最高有效字节放在高地址部分
符合机器取值顺序(先取低有效位再取高有效位)
记忆口诀:
大同小异
Intel唯一在追求小端,【与OS无关】,与硬件制造厂商的选择有关
对齐存储
要求:数据的存储地址是自身大小的整数倍
字长数据 4B
1.字长数据:自身大小为4B,因此存储地址必须为4B的整数倍,例如0000H,0004H,0008H。倘若采用二进制数,则地址末尾必须为000B或100B。
半字长数据 2B
半字长数据:自身大小为2B,因此存储地址必须为2B的整数倍,例如0000H,0002H,0004H 倘若用二进制数,则地址末尾必须为00B或10B。
字节数据 1B
字节数据:自身大小为1B,因此存储地址必须为1B的整数倍,例如0000H,0001H,0002H,即所有地址都可以。
边界对齐
C语言的边界对齐方式
两个要求
①每个成员按其类型的大小对齐,char型的对齐值为1B,short为2B,int 为4B
②struct的长度必须是成员中最大对齐值的整数倍,不够就补空字节
边界对齐方式
边界对齐方式,最大可能满足一次访存可以直接获得一个字的数据
空间换时间
RISC通常采用边界对齐,可以适应指令流水
边界不对齐方式
边界不对齐方式可能2B的半字都需要2次访存
时间换空间
浮点数
目的:为了用有限的位数尽可能扩大数的表示范围,同时保持数的有效精度,就产生了浮点数
通常表示方法
袁春风
其中 R为基数(即R进制),E和M都是有符号定点数。E称为阶码,M称为尾码
E为定点整数,M为定点小数
其中E和M可以用补码或原码来表示
注意计算十进制值的时候补码为负要转为对应真值在写值
一般格式 唐硕飞
阶码反映数值大小及小数点的实际位置, 尾数的数值部分位数n反映精度
尾数规格化
原码
浮点数的尾数部分的最高位一定是1(基数为2)
负数: 1, 1 ....
正数:0, 1....
浮点数的尾数部分的最高两位不全为0(基数为4)
负数: 1, 01 或1, 10或1 , 11
正数:0, 01 或0, 10或0, 11
补码
浮点数的尾数部分最高位和符号位一定不同
负数:1, 0 ...
正数:0, 1....
尾数、阶码规格化
例如 原码 ( M = 1,011 ,E = 0, 000 0010 ),则应该变为:( M = 1,110 ,E = 0, 000 0001),M左移了,E对应减小
尾数左移:左归(算数左移,阶码-1)
尾数右移:右归(算数右移,阶码+1)
注意:右归时,阶码增加可能导致溢出。 (右归前,阶码已经达到最大值,则右归时溢出)
如何移位
对于浮点数中的尾数,按照上表,对于定点整数,按照------------>
不论正数还是负数,移位后其符号位不移动,数值位移动
表示范围
区别与补码溢出
原码
尾数M满足1/2<=|M|<1(此时基数为2) 尾数M满足1/4<=|M|<1(此时基数为4)
补码
尾数M满足1/2<=|M|<=1
IEEE 754
一般格式
<符号位、阶码、尾数>
【符号位】 1 为负,0为正
【阶码】部分使用特殊的移码计算
之前的移码(改符号位):1,000 0001 + 1000 0000 = 0,000 0001
直接在补码那里进行加法运算,例如:1, 000 0001 + 0111 1111(偏) = 0000 0000
【尾数】用原码表示,且隐藏最高位的1,目的是能表示的有效位数更多
不同精度
阶码真值=移码-偏移量 计算时可将移码看做无符号数
表示范围
特殊的浮点数情况 (阶码全1/0)
故IEEE754的阶码真值取值范围是: (1 ~ 254) - 127 = -126 ~ 127
8bit原码表示的阶码可以表示 0 ~ 255,在IEEE754中,0和255分别代表了特殊含义。
E=0,M不全为0,非规格化小数,隐含最高位变为0,阶码真值固定视为-126
NAN:例如0/0 ∞-∞等
总结
举个举例:
IEEE 754 浮点数 - 在线工具
浮点数的运算
为什么不是大阶向小阶看齐
因为此时尾数最高有效位丢失
①对阶
首先把两个浮点数的阶码对齐,以小阶向大阶看齐尾数右移,阶码增加(计算机内部,尾数是定点小数)
②尾数求和
尾数按定点数的加减法进行运算
③规格化
尾数 > 0时,规格化为00.1xxxx 尾数 < 0时,规格化为 11.0xxxx
补码
④舍入
在对阶和右规的过程中,可能会导致尾数的低位丢失,为了提高尾数的精度
"0"舍"1"入法:
尾数右移,如果被【移除的最高位】为 0,那么就舍去。如果被【移除的最高位】的是 1,那么就让尾数 + 1
10100
右移3次:
10 + 1 = 11
右移1次:
1010
此时+1后可能还需要进行规格化
恒置为"1"法:
尾数右移,不管如何移动,尾数最末位一定为 1
⑤溢出判断(阶码)
双符号时
如果阶码出现了“01”,说明出现了上溢,进入中断处理
如果阶码出现了“10”,说明出现了下溢,按 0 处理
计算
在进行加减计算中,采用(双符号位01或10)进行计算,可以挽救很多溢出
例如:符号位 00 和 符号位 00 相加的结果是 0 1,则可以把尾数右移一位,阶码 +1 来进行挽救
例子
一般考试的运算是不会计算IEEE754模式的
计算只有09选择题考了
类型转换
精度:取决于尾数的表示长度,例如double 尾数53位 溢出:取决于表示范围的大小,例如double ->int double 所能表示的范围大于int表示的范围,int 无法表示double的范围
定点和浮点数的表示区别
数值的表示范围
若定点数和浮点数的字长相同,则浮点表示法所能表示的数值范围远大于定点表示法
精度
对于字长相同的定点数和浮点数来说,浮点数虽然扩大了数的表示范围,但精度降低了
数的运算
浮点数包括阶码和尾数两部分,运算时不仅要做位数的运算,还要阶码的运算,而且运算结果要求规格化,所以浮点运算比定点运算复杂
溢出问题
在定点运算中,当运算结果超出数的表示范围时,发生溢出;在浮点运算中,运算结果超出尾数表示范围却不一定溢出,只有规格化后阶码超出所能表示的范围时,才发生溢出。
考频:高
09-15、18、20-22、17大
END