已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学城市学院 计算学院浙江大学城市学院实验报告课程名称 计算机系统原理实验 实验项目名称 实验三 数据的机器级表示 实验成绩 指导老师(签名 ) 日期 一、实验目的:1、通过无符号数和带符号整数之间的相互转换来理解无符号数和补码整数的表示;2、了解IEEE 754浮点数在机器中的应用,特别是一些特殊值的处理。二、实验步骤:1、用32位补码表示的机器上编译并执行以下程序,记录程序的执行结果,并解释原因。图3-1 运行结果:对运算结果的解释:第一个结果:因为在ISO C90标准中,编译器将-2147483648分为两个部分来处理。首先将2147483648看成无符号整型,其机器数为0x80000000,然会对其取负,结果仍为0x80000000,还是将其看成无符号整型,其值仍为21474833648,因此前者大于后者。第二个结果:由于i为int型变量,因此这两个数皆为带符号数,前者小于后者。第三个结果:编译器首先将2147483647看成带符号整型,然后对其取负,得到-2147483647,然后对其-1得到-2147483648,因此前者大于后者。2、编写程序,计算表2.1中的表达式,说明运算类型(无符号、带符号),得到运算结果,并说明为什么是这样的运算结果(参考第二章习题8);源代码:运算结果:对运算结果的解释:1.0和0U都是无符号数,值相等2. -1和0都为带符号数,因此前者小于后者3. 0后加上U表示无符号数,因此比较时前者大于后者4. -2147483647-1的计算结果为一个int型整数,为带符号数,因此前者大于后者。5. 加上U的数都为无符号数,因此前者小于后者6. 2147483648U在经过int强制类型转换后,变为带符号的-2147483648,因此前者大于后者7. 两个数皆为带符号数,因此前者大于后者8. 数据转化为无符号数,前者111B (232-1) 后者1110B (232-2)3、分析以下代码:int sum(int a , unsigned len) int i, sum = 0;for (i = 0; i 二进制00000000-偏移01111111-阶码:01111111 尾数:00011001100110011001101得到二进制机器数:10111111100011001100110011001100十六进制:bf8cccch (与程序验证有出入)6. Double b=10.5 二进制1010.1 规格化后:1.0101*211 符号位:0 阶数:11 阶码:000000000000011+011111111111111=100000000000010 尾0101000000 (52位) 结果即:0100000000000010 0101000000(52位) 十六进制即 4025000000000000 (与程序验证有出入)编程验证源码:查看内存结果截图:5、(选做)设计一个C语言程序,输出一个整数对应的有符号值和无符号值。源码:#include#includeint sumn(char a200)int b200;int len=0;for (int i=0;ai!=0;i+)if (ai=0&ai=A&ai=0;j-)sum=sum+bj*pow(16,k);k+;return sum;int main(void)char num20;int a20; int remain10000; printf(请输入要显示的数据 格式为: 程序 参数 ,如 ./display 0x27n); while (1) gets(num);int flag=0;int pos=0;if (num0=0&num1=x)flag=1;if (num2=-)pos=1;for (int i=0;numi!=0;i+)numi=numi+3; elsefor (int i=0;numi!=0;i+)numi=numi+2; if (num0=-)pos=1;for (int i=0;numi!=0;i+)numi=numi+1; int sum=0;if (flag=0)for (int i=0;numi!=0;i+)ai=numi-0;sum=sum*10+ai;int o=0;int len=0;if (flag=1)for (int i=0;numi!=0;i+)len+; sum=sumn(num); int k=0;char q11;q0=0;q1=x;for (int i=2;i0)qj=hext%16;t=t/16;j-;if (pos=0)printf(Hex:);for (int i=0;i10;i+)printf(%c,qi); printf( Signed: %d Unsigned: %dn,sum,sum); elseprintf(Hex:);for (int i=0;i9;i+)printf(%c,qi); printf( Signed: %d Unsigned: %dn,-sum,sum+128); 运行结果:6、编写程序得出float和double类型的精度(计算机专业必做,软件工程专业选做);源代码:运算结果:根据初始值和输出值的比较得出,float的精度约为7位,double的精度约为16位7、(选做)设计一个C语言程序,输出一个浮点数的IEEE754标准的二进制表示。源代码:#includeint main(void)while (1)float n;printf(请输入要输出的数字(输出结果以二进制表示)n);scanf(%f,&n);int flag=0;if (n0)flag=1;n=-n;printf(Floating point value: %.9f n,n);int a=(int)n;int two100;float b;b=n-a;int i=0;int len=0;while (a)twoi=a%2;a=a/2;i+;len+;int point=len;int o100;for (int i=0;ilen;i+)oi=twolen-i-1; for (i=len;i24;i+) oi=(int)(b*2); b=2*b-(int)(b*2); int ex8=0; point=point-1+127; int k=7; while (point) exk=point%2; point=point/2; k-; printf(Bit Representation=); printf(%d,flag); for (int j=0;j8;j+) printf(%d,exj); for (int j=1;j24;j+) printf(%d,oj); printf( sign=%d exponent=,flag); for (int j=0;j8;j+) printf(%d,exj); printf( fraction=); for (int j=1;j24;j+) printf(%d,oj); printf(n); printf(n); 运算结果:解释:先判断正负来确定符号位,然后将浮点数分为整数部分和小数部分,分别按相应规则转化为二进制数,根据IEEE754规则,浮点数在计算机中储存形式位 1位符号位,加8位阶码,以及23位尾数组成,根据此规则输出即可。四、思考题(必做)1、你的机器字长多少位?int类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 举办竞走比赛行业营销策略方案
- 太阳能收集器产业运行及前景预测报告
- 单比基尼式泳装市场发展预测和趋势分析
- 宝石市场发展预测和趋势分析
- 影碟播放机产业深度调研及未来发展现状趋势
- 通信网络套管预埋施工方案
- 弹簧用皮套产业运行及前景预测报告
- 伺服电机用电子控制器市场需求与消费特点分析
- 伽倻琴朝鲜弦琴产业深度调研及未来发展现状趋势
- 健身房及游泳池清洁服务方案
- 中石油-细节管理手册 03
- 柿子品种介绍PPT课件
- 全国重点文物保护单位保护项目安防消防防雷计划书
- 内镜清洁消毒登记表格模板
- 护士对预防患者跌倒的问卷调查表
- 道路开口施工方案
- 天然气脱硫(课堂运用)
- 幼儿园教师师德师风考核表(共2页)
- 城镇职工医疗保险运行中的问题分析及措施
- 静物构图(课堂PPT)
- 二年级数学上册 第三单元 角的初步认识复习课课件 青岛版
评论
0/150
提交评论