第2章关于浮点数
第2章作业-2 参考答案
二、综合题
1. 若X=-0.1110,Y=-0.1101,采用原码一位乘法运算求 X·Y=? 给出计算过程。
2.若X=-0.1101,Y=-0.1011 试利用补码Booth算法(比较 法)求X·Y=? 给出计算过程。
3. 将十进制数+76.75存入某微机中,试写出其IEEE754标准规 格化单精度浮点数形式。
第2章作业-2 参考答案
一、单项选择题: 1、两个浮点数相加,一个数的阶码值为7 ,另一个数的阶码值为9 ,则需要将阶码
值较小的浮点数的小数点( )。 A .左移1 位 B .右移1 位 C .左移2 位 D .右移2 位29 .
答案: C
2、如果某单精度浮点数、某原码、某补码、某移码的32位机器数均为 OxF0000000 。这些数从大到小的顺序是()。 A .浮原补移 B .浮移补原 C .移原补浮 D . 移补原浮 答案: D
说明
初始值,最后一位补0 Y4Y5=10 +[-X]补
右移一位 Y3Y4=01
+[X]补
右移一位 Y2Y3=10
+[-X]补
右移一位 Y1Y2=01
+[X]补
右移一位 Y0Y1=10 不移位
+[-X]补
3. 解:76.75 = 1001100.11 = 1.00110011 ×26 指数E = 7 + 127 = 133 = 1000 0101B 127是单精度浮点数应加的指数偏移量。
4. 某微机内存有一个单精度规格化浮点数(IEEE754标准)为 C2308000H,试写出其真值。
计算机组成原理
1. 解: X=-0.1110,Y=-0.1101 ,X*=0.1110,Y*=0.1101。 其中寄存器 B=X* ,计数器Cd=4。计算过程:
第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案
2.2 标识符、常量与变量
符号常量
【例2-1】输入圆的半径,计算周长和面积。 #define PI 3.14159 void main() { float r,c,s; scanf("%f",&r); c=2*PI*r; s=PI*r*r; printf("r=%f,c=%f,s=%f\n",r,c,s); }
以下是合法的整型常量:
2.2 标识符、常量与变量
实型常量
实型常量只能用十进制形式表示 表示形式:
小数形式。由数字序列和小数点组成,如 3.1415926、-0.15、.15、2.等都是合法的实型 常量。 指数形式。由十进制数加上阶码标志“e”或 “E”及阶码组成,如3.14e-4或3.14E-4表示 3.14×10-4。
2.2 标识符、常量与变量
2.2.3 变量
在程序运行过程中,其存储的值可以被改变的量称 为变量 变量必须通过标识符进行说明,称为变量名。 变量名和内存单元地址存在映射关系,程序可以通 过变量名寻址,从而访问其存储的数据。
2.2 标识符、常量与变量
变量的定义和说明
数据类型 变量名1[,变量名2,…,变量名n];
long型转换成float型时由原来可达10位整数变成只有7位有效数字精度丢失但由于数的范围扩大了数据类型从较低级提升到较高级随着竞争日益激烈酒店嘴中的肥肉被大肆抢夺各大酒店在这场竞争中几乎溃不成军
21世纪高等学校精品规划教材
第2章 数据类型、运算符 和表达式
掌握C语言的基本数据类型 掌握标识符、关键字、常量和变量的使用 掌握运算符、表达式以及数据类型之间的转换 等 掌握简单数据的输入输出
最新《计算机组成原理》第2章习题答案
最新《计算机组成原理》第2章习题答案第⼆章习题解答1.设机器数的字长8位(含1位符号位),分别写出下列各⼆进制数的原码、补码和反码:0,-0,0.1000,-0.1000,0.1111,-0.1111,1101,-1101。
解:2.写出下列各数的原码、补码和反码:7/16,4/16,1/16,±0,-7/16,-4/16,-1/16。
解:7/16=7*2-4=0.01114/16=4*2-4=0.01001/16=1*2-4=0.0001真值原码补码反码7/16 0.0111 0.0111 0.01114/16 0.0100 0.0100 0.01001/16 0.0001 0.0001 0.0001+0 O.0OOO O.0OOO O.0OOO-0 1.0OOO O.0OOO 1.1111-1/16 1.0OO1 1.1111 1.1110-4/16 1.0100 1.1100 1.1011-7/16 1.0111 1.1001 1.10003.已知下列数的原码表⽰,分别写出它们的补码表⽰:[X1]原=O.10100,[X2]原=l.10111。
解:[X1]补=0.10100,[X2]补=1.01001。
4.已知下列数的补码表⽰,分别写出它们的真值:[X1]补=O.10100,[X2]补=1.10111。
解: X1=O.10100, X2=-0.01001。
5.设⼀个⼆进制⼩数X≥0,表⽰成X=0.a1a2a3a4a5a6,其中a1~a6取“1”或“O”:(1)若要X>1/2,a1~a6要满⾜什么条件?(2)若要X≥1/8,a1~a6要满⾜什么条件?(3)若要1/4≥X>1/16,a1~a6要满⾜什么条件?解:(1) X>1/2的代码为:0.100001~0.111111。
a1=1,a2+a3+a4+a5+a6=1。
(2) X≥1/8的代码为:0.001001~0.111111(1/8~63/64)a1+a2=0,a3=1或a1=0,a2=1,或a2=1(3)1/4≥X>1/16的代码为:0.000101~0.01000(5/64~1/4)a1+a2+a3 =0, a4=1,a5+a6=1 或a1+a2=0,a3=1 或a2=1,a1+a3+a4+a5+a6=06.设[X]原=1.a1a2a3a4a5a6(1)若要X>-1/2,a1~a6要满⾜什么条件?(2)若要-1/8≥X≥-1/4,a1~a6要满⾜什么条件?解:(1) X>-1/2的代码为:1.000001~1.011111(-1/64~-31/64)。
计算机组成原理 第2章
《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
原码、反码与补码
• 例2:已知[x]补=11101110,求[-x]补、[x]反、[x]原及真值x。 解:[-x]补=00010010 ([x]补取反加1) [x]反=11101101 ([x]补减1) [x]原=10010010 ([x]原低7位取反) 真值x=-0010010B=-12H=-18D
《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
补码表示法
• 对定点整数,补码的定义是: X [X]补= 2n > x 0 (mod 2n+1)
2n+1+x=2n+1-|x|
0 > x -2n
《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
补码表示法
• 利用补码可以将减法运算变成加法运算来实现。但是 根据补码定义,求负数的补码要从2减去|X|。为了用加 法代替减法,结果还得在求补码时作一次减法,这显 然是不方便的。可以利用反码的方式解决负数的求补 问题。 • 另一方面,利用补码实现减法运算,可以和常规的加 法运算使用用一加法器电路,从而简化了计算机的设 计。
移码表示法
• 移码的定义:[X]移=2n +X (-2n = <x< 2n)n为阶码数值位 (除符号位)
• 移码的计算:先求出X的补码,再对其符号位取反或直接利用定 义计算。
《计算机组成原理与实验》 冶金工业出版社
计算机组成原理——第 2章
移码的特点
(1)在移码中,最高位为“0”表示负数,最高位为“1”表示正数。 (2)移码为全0时,它所对应的真值最小,为全1时,它所对应的真 值最大。因此,移码的大小比较直观地反映了真值的大小,这有 助于比较两个浮点数阶码的大小。 ( 3 ) 真 值 0 在 移 码 中 的 表 示 形 式 是 唯 一 的 , 即 [+0] 移 =[-0] 移 = 100…0。 (4)移码把真值映射到一个正数域,所以可将移码视为无符号数, 直接按无符号数规 则比较大小。 (5)同一数值的移码和补码除最高位相反外,其他各位相同。
第2章 部分习题答案
-7.2812510=-111.010012 然后移动小数点,使其在第1,2位之间
111.01001=1.1101001×22
e=2
于是得到: e =E – 127
S=1,E=2+127=129=1000,0001,M=1101001
最后得到32位浮点数的二进制存储格式为
1100 0000 1110 1001 0000 0000 0000 0000
第二章 习题解答
7.若浮点数 x 的IEEE754标准32位存储格式为(8FEFC000 )16, 求其浮点数的十进制值。 【解】: 将x展开成二进制:
1000 , 1111, 1110 ,1111 ,1100,0000,0000,0000 数符:1 阶码:0001,1111 尾数:110,1111,1100,0000,0000,0000 指数e=阶码-127=00011111-01111111 =(-96)10 包括隐藏位1的尾数:
符号位为01,故运算结果未溢出。 x-y=1101
.
第5页
第二章 习题解答
20. 已知x和y,分别用带求补器的原码阵列乘法器、带求补器的补码阵 列乘法器和直接补码阵列乘法器计算x×y。
(1) x=0.10111 y=-0.器
[x]原=0.10111 [y]原=1.10011 乘积的符号位为: xf⊕yf=0⊕1=1 因符号位单独考虑,算前求补器的使能控制信号为0,经算前求补
+ [y]补 1 1. 0 0 1 0 1 1 1. 1 1 1 0 0
符号位出现“11”,表示无溢出,x-y=-0.00100
.
第3页
第二章 习题解答
13. 已知[x]补=1.1011000,[y]补=1.0100110,用变形补码计算 2[x]补+1/2[y]补=?,同时指出结果是否发生溢出。
《计算机科学导论》第2章 计算机基础知识
几种常用的进位计数制比较
十进制数 二进制数 十六进制数 八进制数
符号组成
0 ~9
0和1 和
0~9,A~F ,
0~7
基数 第K位权值 位权值
10
- 10K-1
2
- 2K-1
16
- 16K-1
8
K-1 8 K-1
加减运算 法则
逢十进一 借一当十
逢二进 一, 借一当 二
进一, 逢16进一, 进一 借一当16 借一当
逢八进一 借一当八
数制之间的转换
其它进制转换为十进制 二进制与八进制、 二进制与八进制、十六进制的相互转换 十进制数转换为其它进制数
其它进制转换为十进制
方法: 按进位计数制( 位置计数法) 展开计算 方法 : 按进位计数制 ( 位置计数法 ) 后得到十进制 例1:将二进制数 :将二进制数1101.101转换为十进制数 转换为十进制数 解: (1011.101)2 ) =1×23+0×22+1×21+1×20+1×2-1+0×2-2+1×2-3 × × × × × × × =8+0+2+1+0.5+0+0.125 =11.625
练 习
将(11.375)10转换为二进制数 ) 将十进制数301.6875转换为十六进制数 转换为十六进制数 将十进制数 将3ADH转换为十进制数 3ADH转换为十进制数 将10001110010001010B转换为十六进制 10001110010001010B转换为十六进制
计算机中为什么采用二进制? 计算机中为什么采用二进制?
解: 2 ︳105 余数为1 2 ︳52 余数为1 余数为0 2 ︳26 余数为0 余数为0 2 ︳13 余数为0 余数为1 2 ︳6 余数为1 余数为0 2 ︳3 余数为0 余数为1 2 ︳1 余数为1 余数为1 0 余数为1 所以,(105) =(1101001 ,(105 1101001) 所以,(105)10=(1101001)2
第2章2.3浮点运算和浮点运算器
• 阶码用移码表示
• 移码的特点:真值越大,移码的数值也越大,无论正负 • 可以用比较电路直接比较两个阶码的大小
4
2.3 .3 浮点运算流水线
1 流水线原理
• 线性流水线 • 各子任务之间具有这种线性优先关系的流水线 • 线性流水线的硬件基本结构(流水线CAI演示) • 处理一个子任务的过程为过程段(Si) • 线性流水线由一系列串联的过程段组成 • 各个过程段之间设有高速缓冲寄存器(L),以暂 时保存上一过程子任务处理的结果 • 在一个统一的时钟(C)的控制下,数据从一个过 程段流向下一个相邻的过程段
• 当指令控制器工作时,运算器基本上处于空闲状态,而当 运算器工作时指令控制器又处于空闲状态,资源浪费浪费 • 完成第一条指令前三步后,指令控制器不等运算器完成 该指令后两步,立即开始第二条指令,运算器也如此; 16 • 形成一种与工厂中的装配流水线类似的流水线
2.3 .3 浮点运算流水线
1 流水线原理
【例2-18】 设x=2010×0.11011011,y=2100×(-0.10101100), 求x+y。 【解】 为了便于直观理解,假设两数均以补码表示,阶码采用双符 号位,尾数采用单符号位,则它们的浮点表示分别为 [x]浮=00 010 0.11011011 [y]浮=00 100 1.01010100 ①求阶差并对阶 △E=Ex-Ey=[Ex]补+[-Ey]补=00 010+11 100=(11 110)补= (11 010)原=(-2)10 简单起见,010是2D, 100是4D,所以 △E=-2D x的阶码小,应使Mx右移2位,Ex加2 ∴[x]浮=00 100 0.00110110(11) 其中(11)表示Mx右移2位后移出的最低两位数。
计算机组成原理第二章参考答案
第2章 参考答案2写出下列十进制数的原码、反码、补码和移码表示(用8位二进制数)。
如果是小数,则用定点小数表示;若为整数,则用定点整数表示。
其中MSB 是最高位(符号位),LSB 是最低位。
(1)-1 (2) -38/64 解:(1)-1=(-0000001)2 原码: 10000001反码: 11111110 补码: 11111111 移码: 01111111(2)-38/64=-0.59375=(-0.1001100)2或-38/64=-(32+4+2)*2-6=-(100110)*2-6=(-0.1001100)2 原码: 1.1001100反码: 1.0110011补码: 1.0110100移码: 0.0110100注:-1如果看成小数,那么只有补码和移码能表示得到,定点小数-1的补码为:1.0000000此例类似于8位定点整数的最小值-128补码为100000003 有一字长为32位的浮点数,符号位1位;阶码8位,用移码表示;尾数23位,用补码表示;基数为2.请写出:(1)最大数的二进制表示,(2)最小数的二进制表示,(3)规格化数所能表示的数的范围。
解:(题目没有指定格式的情况下,用一般表示法做)(1)最大数的二进制表示:0 11111111 11111111111111111111111 (2)最小数的二进制表示:1 11111111 00000000000000000000000(1) 7232112*2---() (2) 7211*2--()(3)规格化最大正数:0 11111111 111111111111111111111117232112*2---()规格化最小正数:0 00000000 100000000000000000000007122*2--规格化最大负数:1 00000000 011111111111111111111117123222*2----+()规格化最小负数:1 11111111 000000000000000000000007211*2--()规格化数的表示的数的范围为:7777211232122321[1*2,22*2][2*2,12)*2]----------+- ()()(下面补充IEEE 754的规格化浮点数表示范围:IEEE 754的尾数采用1.M 的形式,原码表示;阶e=E-127 (相对于一般表示法的e=E-128,人为的加了1);并且最大的阶(11111111)和最小的阶(00000000)用去作为特殊用途。
计算机系统基础第二章习题参考解答-2018
第二章习题答案9.在32位计算机中运行一个C语言程序,在该程序中出现了以下变量的初值,请写出它们对应的机器数(用十六进制表示)。
(1)int x=-32768 (2)short y=522 (3)unsigned z=65530(4)char c=’@’(5)float a=-1.1 (6)double b=10.5本题要点:(1)数据要根据其类型要表示到足够的位数,如题(3),要写成0000FFFA,而不是FFFA(2)因为求机器数,所以负数要用补码表示(3)浮点数要用IEEE 754标准编码,要注意是float还是double,分别编码:阶码位数、尾数位数、偏置常数各不相同。
要表示到足够的位数。
(4)16进制数后面要写H标识,二进制数后面要写B标识参考答案:(1)FFFF8000H解:-215=-1000 0000 0000 0000B,负数符号位为1,int型整数表示为32位,故机器数为1…1 1000 0000 0000 0000=FFFF8000H(2)020AH解:522=10 0000 1010B,正数符号位为0,short 型整数表示为16位,故机器数为0000 0010 0000 1010=020AH(3)0000FFFAH解:65530=216-1-5=1111 1111 1111 1010B,unsigned型整数表示为32位,无符号位(高位补0),故机器数为0000FFFAH(4)40H解:’@’的ASCII码是40H,char型表示为8位(5)BF8CCCCCH解:-1.1=-1.00011 [0011]…B=-1.000 1100 1100 1100 1100 1100B,float型浮点数,阶码为127+0=01111111(8位),整数部1为隐藏位,负数符号位为1,故机器数为1 01111111 000 1100 1100 1100 1100 1100=BF8CCCCCH(6)40250000 00000000H解:10.5=1010.1B=1.0101B 23(左规),Double型浮点数,阶码为1023+3=100 0000 0010,整数部1为隐藏位,正数符号位为0,故机器数为0 100 0000 0010 0101 [0000]=40250000 00000000H10. 在32位计算机中运行一个C语言程序,在该程序中出现了一些变量,已知这些变量在某一时刻的机器数(用十六进制表示)如下,请写出它们对应的真值。
第二章 计算机中数据的表示
假设数字符号序列为: xx……x……xx.xx……x通常我们在数字符号序列后面加上标注以示声明,如上面的R进制数表示为 (xx……x……xx.xx……x)。x为0和R-1之间的整数;x的下标为数字符号的位序号,它所代表的值为x* R。系数R (R)被称为x所在位置的权。 (3)一个数的实际值为各位上的实际值总和 如: X= xx…x…xx.xx…xV(X)= x*R+x*R+…x*R+…x*R+x* R+x*R+x*R+…x*R即: V(X)=x*R+ x*RV(X)表示X的值,m、n为正整数。
第2章
计算机中数据的表示
第2章
计算机中数据的表示
第2章
计算机中数据的表示
第2章
(2)小数部分
计算机中数据的表示
V(X)=0.xx……x= x*R+x*R+……x*R若将其乘以R,可得 V(X)*R = F*R = x+ x*R+x*R+……x*R = x+F其中,x为大于1的数,所以x为整数, F小数部分。 再将F乘以R,可得 F*R= x+F x为新得到的整数。 依此类推, F*R= x*+F如此循环下去,直到小数部分为0或商的精度达 到我们的要求为止,我们就得到了从x、x一直到x的数字符号序列。也就是说, 我们要把十进制的小数转换为R进制的小数数时,只需将十进制的小数连续地 乘以R,其逐次所得到的整数即为从x到x的R进制小数的数字符号序列。
第2章
计算机中数据的表示
3.二进制及二进制数的运算 . 二进制采用逢二进一的进位规则表示数字,采用0和1两个数字符 号。计算机里就采用二进制表示信息。由于R进制的表示规则我们已 经熟悉,我们这里竟不花费篇幅重复二进制的表示规则。我们针对二 进制的运算进行介绍。 (1)加法规则:“逢2进1” 0+0=0 0+1=1+0=1 1+1=10 【例2-1】 求1010.110+1101.010 解: 1010.110 + 1101.010 ----------11000.000 结果:1010.110+1101.100=11000.000
计算机组成原理第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流水线完成一条浮点数操作指令。
第2章基本数据类型
例2-2 如有unsigned short j; scanf("%lu", &j);,则当用户输 入-1时,变量j的值是多少?
变量j是无符号短整型,取值只能是非负数, 当用户输入-1时,会出错吗? 不会的!
整个处理过程与语句unsigned short j = -1; 的执行过程类似。 长度修饰符l对输入有何影响?
整型变量的输出值
2.1.3.3 验证程序中变量的实 际值是确定的
虽然printf函数在输出变量的值时不考虑变量 的类型,而仅仅根据格式字符来确定输出值; 理论上,变量的类型是确定的,变量的实际 值自然也是确定的;但能否编程“证明”变 量的实际值是确定的呢? 设一个short型变量i,它的存储状态为16个1, 那么它的实际值是-1还是65535呢?
思路二:变量i的值究竟是-1 还是65535?
由于两个整数相除的商通常只取整数部分, 故当除数为负数且不能整除时,模运算结果 的符号与被除数的符号相同。
如果变量i的值为65535,则i % -2的结果
为1;如果变量i的值为-1,则i % -2的结果
为-1
2.1.3.4 长度修饰符对输入的 影响
计算机中存储单元的编码特点不仅决定了C 语言数据类型的特点,而且也决定了计算机 的“计算”能力。计算机能算多大整数的和?
如果计算机用2个字节的存储单元存储整数?
整型
计算机中的整型存储单元用于存储整数,根 据编码长度和编码方式分类。 关键字int可用于定义整型变量,如int i;所示。
在TC中,int型变量i占两个字节,而在VC6.0 中,int型变量i用4个字节编码。 两个字节的二进制数最多可以表示(编码) 多少个整数?
第 章 部分习题答案
注意位数对齐
第8页
第二章 习题解答
22. 已知x和y,用原码阵列除法器计算x÷y。
(1)x=0.10011 y=-0.11011
被除数/余数
商
【解】: [x]原=0.10011
01001100000
[y]原=1.11011
(2) 尾数相加减:
相加
00.100101
相减
00.100101
+ 11.000100
+ 00.111100
11.101001
01.100001
(3) 规格化处理
加法结果不是规格化数,向左规格化,即
[x+y]补=11 100,11.010010 阶码减1 减法结果不是规格化数,向右规格化,即
[x-y]补=11 110,00.1100001 阶码加1
-7.2812510=-111.010012 然后移动小数点,使其在第1,2位之间
111.01001=1.1101001×22
e=2
于是得到: e =E – 127
S=1,E=2+127=129=1000,0001,M=1101001
最后得到32位浮点数的二进制存储格式为
1100 0000 1110 1001 0000 0000 0000 0000
第11页
第二章 习题解答
27. 设浮点数的表示格式中阶码占3位,尾数占6位(都不包括符号位),阶 码采用双符号位的补码表示,尾数用单符号位的补码表示。要求用直接补 码阵列乘法完成尾数乘法运算,运算结果的尾数取单字长(含符号位共7 位),舍入规则用“0舍1入”法,用浮点运算方法计算x×y。
第2章 计算机中数据信息的表示和运算-浮点表示
练习: 将X=-19/64表示成浮点规格化数(阶码3位,阶 符1位,尾数7位,尾符1位),阶码采用原码,尾数 用规格化,用补码的形式表示。 定点数:[X]补=1.1011010; X=-19/64=(-10011*2-110)2=-0.010011=2-01*-0.10011 E=-01,E 原=1001; M=-0.1001100,M补=1.0110100 浮点数: 1,001; 1.0110100
例:
32位浮点二进制数,8位为补码表示的阶 码,24位(含1位符号位)为补码表示的规格 化尾数,试指出它所表示的最大正数与最小正 数数据格式。 最大正数:0111 1111 0.111…11 最小正数:1000 0000 0.100…00
3 机器数的移(增)码表示法
定义:设定点整数移码序列Xn Xn-1„„ X0,则, [X]移 = 2n + X 2n>X≥-2n 即无论X是正还是负,一律加上2n,称2n为基数 移码就是在真值X上加一个常数(偏置值),相当于X在数 轴上向正方向平移了一段距离,这就是“移码”一词的 来由。 [X]移=偏置值+X 传统上,对于字长8位的定点整数,偏置值为27。 在IEEE754中,偏置值为(27-1)
•S:浮点数的符号位,0表示正数,1表示负 数 •M:尾数,用原码定点小数表示,小数点放 在尾数域的最前面,且小数点前面隐含一位 1 •E:阶码,用移码来表示,偏置常数为127 (单精度)或1023(双精度)
4 IEEE 754浮点数标准
•真值为: •(-1)s*1.M*2E-127
•或 (-1)s*1.M*2E-1023。
例1:若浮点数X的754标准存储格式(41360000)16 ,求其 浮点数的十进制数值。 解:将16进制数展开后,可得到二进制格式: 0 100 0001 0011 0110 0000 0000 0000 0000 e=E-127=100 0001 0-01111111=00000011=3 包括一位隐含位的尾数 1.M=1. 011 0110 0000 0000 0000 0000 = 1.011011 于是:
《C语言程序设计》第二章基本数据类型
《C语⾔程序设计》第⼆章基本数据类型⽬录:2.1 常量与变量2.1.1 常量2.1.2 变量2.2 简单的屏幕输出2.3 数据类型2.4 如何计算变量或数据类型所占内存空间的⼤⼩2.5 变量的赋值和赋值运算符2.6 本章扩充内容2.7 本章知识点⼩结2.8 本章常见错误⼩结2.1.1 常量不同类型的整型常量实例特点有符号整型常量10,-30,0默认的int型定义为有符号整数,因此对int型⽆须使⽤signed⽆符号整型常量30u,256U⽆符号整型常量由常量值后跟U或u来表⽰,不能表⽰成⼩于0的数,如-30u就是不合法的长整型常量-256l,1024L长整型常数由常数值后跟L或l来表⽰⽆符号长整型常量30lu⽆符号长整型常量由常数值后跟LU、Lu、lU或lu来表⽰不同类型的实型常量实例特点单精度实型常量 1.25F,1.25e-2f单精度实型常量由常量值后跟F或f来表⽰双精度实型常量0.123,-12.35,.98实型常量隐含按双精度型处理长双精度实型常量 1.25L长双精度型常量由常量值后跟L或l来表⽰2.1.2 变量定义变量的⼀般形式:类型关键字变量名;关键字(Keyword):C语⾔预先规定的、具有特殊意义的单词auto :声明⾃动变量break:跳出当前循环case:开关语句分⽀char :声明字符型变量或函数返回值类型const :声明只读变量continue:结束当前循环,开始下⼀轮循环default:开关语句中的“默认”分⽀do :循环语句的循环体double :声明双精度浮点型变量或函数返回值类型else :条件语句否定分⽀(与 if 连⽤)enum :声明枚举类型extern:声明变量或函数是在其它⽂件或本⽂件的其他位置定义float:声明浮点型变量或函数返回值类型for:⼀种循环语句goto:⽆条件跳转语句if:条件语句int:声明整型变量或函数long :声明长整型变量或函数返回值类型register:声明寄存器变量return :⼦程序返回语句(可以带参数,也可不带参数)short :声明短整型变量或函数signed:声明有符号类型变量或函数sizeof:计算数据类型或变量长度(即所占字节数)static :声明静态变量struct:声明结构体类型switch :⽤于开关语句typedef:⽤以给数据类型取别名unsigned:声明⽆符号类型变量或函数union:声明共⽤体类型void :声明函数⽆返回值或⽆参数,声明⽆类型指针volatile:说明变量在程序执⾏中可被隐含地改变while :循环语句的循环条件int main(void){int a; //⽤关键字int指定变量a的类型float b; //⽤关键字float指定变量b的类型char c; //⽤关键字char指定变量c的类型a=1; //为int型变量a赋值整型变量1b=2.5; //为float型变量b赋值实型变量2.5c='A'; //为char型变量c赋值字符型变量'A'return0;}⼀个C 程序必须且只能有⼀个⽤main作为名字的函数,这个函数成为主函数;main后⾯圆括号内的void表⽰它没有函数参数;main前⾯的int表⽰函数执⾏后会返回操作系统⼀个整数型,在main函数的函数体中的最后⼀条语句使⽤return语句返回了这个值,通常返回0表⽰程序正常结束。
第2章(5)浮点运算
[x]移=01 011, [y]补=00 110, [-y]补=11 010
[x+y]移=[x]移+[y]补=10 001, 结果上溢。
[x-y]移=[x]移+[-y]补=00 101, 结果正确,为-3。
的定义为
[y]补=2n+1+y
则求阶码和用如下方式完成:
[x]移+[y]补=2n+x+2n+1+y =2n+1+(2n+(x+y)) =2n+1+[x+y]移
即
[x+y]移=[x]移+[y]补 (mod 2n+1)
(2.42)
同理
[x-y]移=[x]移+[-y]补
(2.43)
上二式表明执行阶码加减时,对加数或减数 y来说,应送移
阶码上溢 超过了阶码可能表示的最大值的正指数值,一般将其 认为是+∞和-∞。
阶码下溢 超过了阶码可能表示的最小值的负指数值,一般将其 认为是0。
尾数上溢 两个同符号尾数相加产生了最高位向上的进位,将尾 数右移,阶码增1来重新对齐。
尾数下溢 在将尾数右移时,尾数的最低有效位从尾数域右端流 出,要进行舍入处理。
[例25] 设x=2010×0.11011011,y=2100×(-0.10101100),求 x+y。 [解:]
为了便于直观理解,假设两数均以补码表示,阶码采用双符 号位,尾数采用单符号0 010, [y]浮=00 100,
0.11011011 1.01010100
码符号位正常值的反码。
如果阶码运算的结果溢出,上述条件则不成立。 此时,使用双符号位的阶码加法器,并规定移码的第二个符号位, 即最高符号位恒用 0 参加加减运算,则溢出条件是阶码的最高符号 位为1。 此时,当两位符号位为 10时,表明上溢,为11时,表明下溢。 当最高符号位为0时,表明没有溢出; 两位符号位为01时,结果为正;为 00 时,结果为负。
计算机系统基础第二章习题参考答案-2018
本题要点 (1) 正确换算,结果最好表示成 10 进制 (2) 注意数据类型,准确区分有符号数和无符号数,有符号数最高位为 1 时为负数 (3) 正确解析浮点数 参考答案: (1)-65530 解:FFFF0006H=1…1 0000 0000 0000 0110B,最高位为 1,所以为负数,int 型整数,所以真值 为其余为取反加 1,故 x= -1111 1111 1111 1010B= -(65535-5)=-65530 (2)-8196 解:DFFCH=1101 1111 1111 1100B=-010 0000 0000 0100B,最高位为 1,所以为负数,short 型整 数,所以真值为其余为取反加 1,故 y=-(8192+4)=-8196 (3)4294967290(或 232-6) 解:FFFFFFFAH=1…1 1010B,最高位虽然为 1,但为 unsigned 型整数,所以解析为正整数,直 接展开换算,故 z=232-6=4294967290 (4)字符’*’ 解:2AH=0010 1010B,故 c 的值是 42,且 c 表示字符,故 c 为字符’*’ (5)-800 解:C4480000H=1100 0100 0100 1000 0…0B,因为是 float 型浮点数数据,所以按照 IEEE 754 标 准解析。符号位为 1,所以为负数;阶码为 10001000,减掉偏置常数 127 后有:阶为 136-127=9;尾数考 虑隐藏位为:-1.1001B,故 a=-1.1001B29= -11 0010 0000B= -800 (6)-10.25 解:C024800000000000H=1100 0000 0010 0100 1000 0 0…0B,因为是 double 型浮点数,所以按照 IEEE 754 标准解析。符号位为 1,所以为负数;阶码为 100 0000 0010, ,减掉偏置常数 1023 后有:阶为
第二章 浮点数的表达与运算
浮点数的表示与运算一、选择1、在规格化浮点数运算中,若浮点数为25×1.10101,其中尾数为补码表示,则该数需将尾数左移一位规格化2、浮点数格式如下:1位阶符,6位阶码,1位数符,8位尾数。
若阶码用移码,尾数用补码表示,则浮点数所能表示数的范围是-263 ~(1-2-8)×2633、某浮点机,采用规格化浮点数表示,阶码用移码表示(最高位代表符号位),尾数用原码表示。
下列哪个数的表示不是规格化浮点数?(B )阶码尾数A.11111111,1.1000 (00)B.0011111,1.0111 (01)C.1000001,0.1111 (01)D.0111111,0.1000 (10)4、设浮点数阶的基数为8,尾数用模4补码表示。
试指出下列浮点数中哪个是规格化数?(C )A.11.111000B.00.000111C.11.101010D.11.1111015、按照IEEE654标准规定的32位浮点数(41A4C000)16对应的十进制数是( D )A.4.59375B.-20.59375C.-4.59375D.20.593756、如果某单精度浮点数、某原码、某补码、某移码的32位机器数为0xF0000000。
这些数从大到小的顺序是移>补>原>浮7、假定采用IEEE754标准中的单精度浮点数格式表示一个数为45100000H,则该数的值是(+1.125)10×2118、设浮点数共12位。
其中阶码含1位阶符共4位,以2为底,补码表示:尾数含1位数符共8位,补码表示,规格化。
则该浮点数所能表示的最大正数是27-19、如果浮点数的尾数用补码表示,则下列(D )中的尾数是规格化数形式。
A. 1.11000B. 0.01110C. 0.01010D.1.0001010、设浮点数的基数为4,尾数用原码表示,则以下(C )是规格化的数。
A. 1.001101B.0.001101C.1.011011D.0.00001011、已知X=00.875×21,Y=0.625×22,设浮点数格式为阶符1位,阶码2位,数符1位,尾数3位,通过补码求出Z=X-Y 的二进制浮点数规格化结果是0111 01112、IEEE754标准中的舍入模式可以用于二进制数也可以用于十进制数,在采用舍入到最接近且可表示的值时,若要舍入两个有效数字形式,(12.5)D应该舍入为1213、下列关于舍入的说法,正确的是(E )A.不仅仅只有浮点数需要舍入,定点数在运算时也可能要舍入B. 在浮点数舍入中,只有左规格化时可能要舍入C. 在浮点数舍入中,只有右规格化时可能要舍入二、综合应用题1、什么是浮点数的溢出?什么情况下发生上溢出?什么情况下发生下溢出?2、现有一计算机字长32位(D31~D0),数符位是第31位。
浮点数表示形式
浮点数表示形式
浮点数表示形式是计算机中用来表示小数的一种方法,与定点数表示形式相对应。
由于计算机中的数据都是以二进制形式存储的,因此对于小数,我们无法像十进制那样精确表示每一位小数。
为了解决这个问题,计算机中引入了浮点数表示形式。
浮点数表示形式将小数部分和指数部分分开表示,例如:3.14159可以表示为1+3.14159E-1。
其中3.14159是小数部分,E-1是指数部分,表示10的负一次方。
通过这种方式,浮点数可以表示很大或很小的小数,以及包含小数部分的数。
浮点数表示形式有多种,包括单精度浮点数、双精度浮点数、IEEE 754标准等。
不同的表示形式有不同的精度和范围,以满足不同的需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章计算机中数据的表示之关于浮点数 计算机应用教研室 房好帅
1.关于浮点数的问题 浮点数的一般格式:
格式(1) 格式(2)
注意:(1)一般浮点数尾数采用纯小数(隐含位为0)来表示,即尾数M 与定点小数表示方法相同,由于
尾数的符号位决定整个浮点数的符号,故有时采用格式(2)的形式;
(2)当尾数真值为0(不论阶码何值),或阶码的值比能在机器中表示的最小值还小,计算机把该浮
点数看成零值,称为机器零,即浮点数表示不了真值绝对值很接近0的数,只能看成0处理; (3)尾数通常用原码或补码表示,阶码一般用移码或补码表示,如无特别说明,采用课本44页移码
表示方法。
浮点数表示范围:
⨯最大阶码
最大正数=最大正尾数2 ⨯最小阶码
最小正数=最小正尾数2
⨯最小阶码
最大负数=最大负尾数2
⨯最大阶码
最小负数=最小负尾数2
那么给定一浮点数的表示形式,包括符号、阶码、尾数各占位数及其采用哪种机器码表示,如求其能表示最大负数,转化为求这种表示形式的能表示的最大负尾数,最小阶码。
浮点数规格化表示:
为了提高数据的表示精度,当浮点数尾数的真值不为 0 时,满足条件112
≤≤尾数真值,称为一般
浮点数的规格化表示。
如没特别说明,指的是一般的非规格化浮点数。
注意规格化浮点数与一般浮点数一样,隐含位也是0,仅仅对尾数真值加上这一约束条件而已。
对于不同码制,特征如下: (1)尾数原码表示: (采用形式(1),按照尾数数值位为n 位)
①尾数>0时,其尾数部分形式尾数符号
1位
尾数数值n 位
01XXXXXXXXXXXXXXXXXX
称为规格化
最大:尾数部分0111…11,真值为12n
--;
最小:尾数部分0100…00,真值为
12
;
②尾数<0时,其尾数部分形式尾数符号1位
尾数数值n 位
11XXXXXXXXXXXXXXXXXX
称为规格化
最大:尾数部分1100…00,真值为12
-
;
最小:尾数部分1111…11,真值为(12)n
---;
(2)尾数补码表示: (采用形式(1),按照尾数数值位为n 位)
阶码符号尾数符号
数值
阶码符号尾数符号10
①尾数>0时,其尾数部分形式尾数符号
1位
尾数数值n位
01XXXXXXXXXXXXXXXXXX称为规格化
最大:尾数部分0111…11,真值为12n-
-;
最小:尾数部分0100…00,真值为1
2
;
②尾数<0时,其尾数部分形式尾数符号
1位
尾数数值n位
10XXXXXXXXXXXXXXXXXX称为规格化
(注意:某些书上对此含糊其辞,参考清华(郑纬民:计算机系统结构)与上交大的书,以此为准!)
最大:尾数部分1011…11,真值为
1
(2)
2
n
-
-+;
最小:尾数部分1000…00,真值为-1;关于IEEE745浮点数:
表示形式
数值1位
(1)IEEE754浮点数短浮点数和长浮点数尾数隐含位为1,临时浮点数没有隐含位,注意阶码的偏置值与
一般浮点数不同,对于单精度和双精度数
(1) 1.2
s
m E
m-
=-⨯⨯偏置值表示真值
;
短浮点数和长浮点数尾数采用隐含位为1称之为规格化的IEEE短浮点数与长浮点数(注意区别一般的规格化浮点数)。
IEEE标准中也引入了非规格化浮点数,规定当浮点数的指数为允许的最小指数值时,尾数不必是规格化(Normalized)的。
有了非规格浮点数,去掉了隐含的尾数位的制约,可以保存绝对值更小的浮点数。
(2)机器零表示为全0;
(3)无限大数阶码全1,尾数全0,符号位指示正无穷或者负无穷。
若阶码全1,尾数不全0,表示NaN (非数字)。
(4)由于(2)(3)原因,单精度数阶码部分不能使用11111111和00000000,双精度阶码不能使用11111111111和00000000000。
2.课本习题3-4解答
以下解答采用浮点数表示形式(1),注意本题目不是IEEE754的格式!!!!!指的是一般浮点数。
(1)根据浮点数的表示范围,实质上是找到最大正尾数、最大阶码的表示及其真值(没有特别指出指的是一般格式浮点数,不用考虑规格化)
阶码:移码(课本44-45页),故全1时最大;尾数:补码
二进制表示为:
011111111111111111111111
11111111
真值:23127
(12)2
-
-
(2)实质上是找到最小负尾数、最大阶码(没有特别指出指的是一般格式浮点数,不用考虑规格化)
二进制表示为:
100000000000000000000000
11111111
真值:127
2
-
(3)规格化需要特别注意其尾数的形式!!!尾数为补码,注意其正、负的表示形式
最大正数形式:01111111111111111111111111111111真值:23127
(12)2--
最小正数形式:01000000000000000000000000000000真值:128
122
-
最大负数形式:
10111111111111111111111100000000真值:231281(2)22
---+
最小负数形式:10000000000000000000000011111111真值:127
2-
3.关于IEEE754标准表示范围的讨论(以短浮点数为例)
IEEE754标准的短浮点数采用偏置值为127的移码作为阶码,尾数采用原码表示,规格化的IEEE 短浮点数有隐含位为1。
(注意区别于一般的浮点数的特点)故规格化的IEEE 短浮点数表示范围讨论如下: 最大正数,考虑到阶码的取值限制,只能取00000001-11111110,故形式为
11111111111111111111111011111110真值:23127(22)2-- 最小正数:
00000000000000000000000000000001真值:1262-
最大负数:
00000000000000000000000100000001真值:1262--
最小负数:
11111111111111111111111111111110真值:23127(22)2---
另,当全0时,用来表示浮点0
关于规格化的IEEE 长浮点数的范围,请大家自行推理研究。
上次考试原题:IEEE754标准规定32位浮点数格式中,符号位1位,阶码为8位,尾数为23位,则能表示的最大规格化正数为: A.23
127
(22)2
-++-⨯ B.23
127
(12
)2
-++-⨯ C.23
255
(22
)2
-++-⨯ D.127
23
2
2+-
4.更多>>
(1)数据表示这部分机器码中补码作为重点及难点,对于数据的表示,着重从其设计思想上理解,如果实在是不能够理解和推导出这几种机器码的表示方式及范围,只能记住了;对于求数值的机器数,比如负数的补码,可以采用公式,也可采用符号位为1,数值位取反末位加1去得到,反过来求机器数的真值道理亦然;
(2)浮点数这部分是难点,请大家仔细阅读本文,应该能区别开一般的作为理论研究的浮点数,一般的规格化浮点数以及在IEEE754标准下的浮点数之不同;
(3)关于数据表示的内容,课堂上只学到了最基本的,其实还有很多,比如按照某种要求设计一种浮点数,某种浮点数的表示方法的评价标准包括表数精度、表数效率、基值选择、格式设计等等,计算机系统结构学科关于这部分的内容很多很多,有兴趣同学可参考清华大学教授郑纬民编写的《计算机系统结构》一书。