第02次小课数据运算、浮点数据存储_第1页
第02次小课数据运算、浮点数据存储_第2页
第02次小课数据运算、浮点数据存储_第3页
第02次小课数据运算、浮点数据存储_第4页
第02次小课数据运算、浮点数据存储_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 1.原码加/减法运算 加法规则: 先判符号位,若相同,绝对值相加,结果符号不变; 若不同,则作减法, |大| - |小|,结果符号与|大|相同。 减法规则: 两个原码表示的数相减,首先将减数符号取反,然后将被减数与符号取反后的减数按原码加法进行运算。23 4main() int x=74,y=-41,z; z=x+y; printf(xyzn); printf(%d%d%dn,x,y,z); printf(%X %X %Xn,x,y,z);运行结果:xyz74 -41 334A FFD7 2156main() int x=106,y=52,z; z=x-y; printf(xyzn); p

2、rintf(%d%d%dn,x,y,z); printf(%X %X %Xn,x,y,z);运行结果:xyz106 52 546A 34 367逻辑运算逻辑运算单元运算单元运算NOT非运算非运算双元运算双元运算AND与运算与运算OR或运算或运算XOR异或运算异或运算8 9main() int x=182,y=215,z; z=x&y; printf(xyzn); printf(%d%d%dn,x,y,z); printf(%X %X %Xn,x,y,z);运行结果:xyz182 215 150B6 D7 9610 11main() int x=182,y=215,z; z=x|y; p

3、rintf(xyzn); printf(%d%d%dn,x,y,z); printf(%X %X %Xn,x,y,z);运行结果:xyz182 215 247B6 D7 F712 13 Xor 浮点表示法允许小数点浮动允许小数点浮动,即可以在小数点的左右有不同数量的数码,这样可以有效地保证数据的精度。 在浮点表示法中,无论十进制还是二进制,一个数字都由三部分组成,如图2-4所示。第一部分是符号符号,可正可负; 第二部分是小数点应该左右移动构成实际数字的位移量位移量; 第三部分是小数点位置固定的定点定点表示法。浮点表示法 三.浮点数的表示格式例例2-25 用科学记数法表示数字 -0.000000

4、00000316。解: 实际数字: -0.00000000000316十进制科学记数法: -3.1610-12在这个例子中,这个数字的三个部分分别是: 符号(-)、位移量(-12)、定点部分(3.16)。例例2-27 用浮点格式表示数字 -(0. 00000000000001101)2。解: 使用例2-25同样的方法,小数点前只保留一位数字。实际数字: -(0. 00000000000001101)2二进制科学记数法: -1.1012-16在这个例子中,这个数字的三个部分分别是: 符号(-)、位移量(-16)、定点部分(1.101)。 2) 规范化为了使表示法的固定部分统一,十进制科学记数法和

5、浮点表示法(即二进制科学记数法)都在小数点左边使用了唯一的非零数码,这称为规范化。十进制系统中的这位非零数码可能是19,而二进制系统中该数码是1。则定点部分的表示方法都可以规范为以下形式: 十进制 d.xxxxxxxxxxxxxx 注意: d是19,每个x是09。二进制 1.yyyyyyyyyyyyyy 注意: 每个y是0或1。3) 符号、指数和尾数 在一个二进制数用浮点法表示并规范化之后,可以只存储该数的三部分信息: 符号S、指数E和尾数M(小数点右边的位)。例如,+(1000111.0101)2规范化后变成为:+ 1.000111010126。可以只存储以下三部分以表示这个数。符号S: +

6、指数E: 6尾数M: 00011101014)4) IEEE标准浮点数的存储与表示 美国电气和电子工程师协会(IEEE)定义了几种存储浮点数的标准。最常用的是单精度和双精度两种类型。单精度单精度格式使用32位存储一个用浮点法表示的实数。符号占用1位(0为正,1为负),指数占用8位(使用偏移量127),尾数使用23位(无符号数)。因为偏移量是127,该标准也称为余127码。双精度双精度格式使用64位来存储一个用浮点法表示的实数。符号占用1位(0为正,1为负),指数占用11位(使用偏移量1023),尾数使用52位(无符号数)。因为偏移量是1023,该标准也称为余1023码。一个十进制实数可以通过以

7、下步骤存储为IEEE标准浮点数格式。(1) 在符号位S中存储符号(0或1)。(2) 将数字转换为二进制。(3) 规范化。(4) 计算指数E和尾数M的值。(5) 连接符号位S、指数E和尾数M,即为IEEE标准浮点数存储格式。例例2-28 2-28 写出十进制数5.75的单精度(余127码)表示法。解: (1) 符号为正,所以S=0。(2) 十进制转换为二进制: 5.75=(101.11)2。(3) 规范化: (101.11)2=(1.1011)222。(4) E=2+127=129=(10000001)2,M=1011。需要在M的右边增加19个0使之成为23位。(5) 该表示法如下所示: 0 1

8、0000001 10110000000000000000000S E MMs 代表浮点数的符号代表浮点数的符号n 其位数反映浮点数的精度其位数反映浮点数的精度k 其位数反映浮点数的表示范围其位数反映浮点数的表示范围Es 和和 k 共同表示小数点的实际位置共同表示小数点的实际位置Es Ek-1 E1E0 Ms Mn-1 M1M0 E 阶码阶码M 尾数尾数阶符阶符数符数符阶码的阶码的数值部分数值部分尾数的数值部分尾数的数值部分小数点位置小数点位置浮点数的表示格式浮点数的表示格式原码规格化后的尾数 正数为 0.1的形式 负数为 1.1的形式补码规格化后的尾数 正数为 0.1的形式 负数为 1.0的形

9、式规格化规格化同一个浮点数表示不唯一,如:1.11 20, 0.111 21 设字长为设字长为1616位,其中阶符位,其中阶符1 1位,阶码位,阶码4 4位,尾位,尾符符1 1位,尾数位,尾数1010位,要求将位,要求将X=X=101101.0101101101.0101写成写成规格化浮点补码数,阶码和尾数均用补码表示。规格化浮点补码数,阶码和尾数均用补码表示。 X=-101101.0101X=-101101.01010.10110101010.10110101012 26 6 0011010100101011 阶符阶符 阶码阶码 尾符尾符 尾数尾数 设阶码用原码表示,尾数用补码表示,求设阶码

10、用原码表示,尾数用补码表示,求下列机器数的真值。下列机器数的真值。 0001010010011001阶符阶符 阶码阶码 尾符尾符 尾数尾数 解解:真值真值0.110110011122 2526272829 这种方案实现的前提是:系统使用这种方案实现的前提是:系统使用7单位单位的的ASCIl码表示字符每个字符编码用一个字码表示字符每个字符编码用一个字节存储,这样就有一个节存储,这样就有一个“空闲空闲”位可以用作位可以用作汉字或者字符的标志位。那么,为什么汉字汉字或者字符的标志位。那么,为什么汉字内码不直接用国标码的区号和位号来表示,内码不直接用国标码的区号和位号来表示,而要作一个加而要作一个加3

11、2的位移呢的位移呢?这是种以防万一的这是种以防万一的考虑。区、位号的取值范围是考虑。区、位号的取值范围是l94,加上,加上32后,码值在后,码值在33126之间。这样就避过之间。这样就避过ASCIl码的控制字符区间。万一系统没有汉字处理码的控制字符区间。万一系统没有汉字处理能力,把汉字内码字节的右能力,把汉字内码字节的右7位当作字符处理,位当作字符处理,也只是错为可印出字符,引起混乱的程度也也只是错为可印出字符,引起混乱的程度也许不那么严重。许不那么严重。 公式: 汉字机内码=汉字国标码+8080H 汉字国标码=汉字区位码+2020H 变换: 汉字区位码=汉字国标码-2020H 汉字国标码=汉字机内码-8080H 公式: 汉字区位码=汉字机内码-AOAOH 汉字机内码=汉字区位码+AOAOH303132 验证:首先用记事本写入两个验证:首先用记

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论