计组3117301田志阳.docx
- 文档编号:25667256
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:9
- 大小:187.71KB
计组3117301田志阳.docx
《计组3117301田志阳.docx》由会员分享,可在线阅读,更多相关《计组3117301田志阳.docx(9页珍藏版)》请在冰豆网上搜索。
计组3117301田志阳
实验项目三:
数据的存储与类型转换(2学时)
专业班级:
软工1512
姓名:
田志阳
学号:
2015117301
任课教师:
王峰
2017年4月27日
一、实验目的:
1.了解数据在机器中的存放方式(存放顺序、对齐方式)。
2.了解无符号数和带符号整数是如何进行扩展的。
3.不同数据类型之间是如何进行转换的
二、实验要求:
1.设计一个程序以检查你的机器是大端方式还是小端方式。
以及检查内存变量(如结构或数组)是否按边界对齐。
2.通过编程得出无符号数和带符号整数是如何进行扩展的。
3.编写程序说明不同数据类型之间进行转换时在表数范围和精度上的变化。
(1)给定一个short型数据-12345,分别转换为int、unsignedshort、unsignedint、float类型的数据;
(2)给定一个int型数据2147483647,分别转换为short、unsignedshort、unsignedint、float、double类型的数据;
(3)给定一个float型数据123456.789e5,转换成int、double型数据;
(4)给定一个double型数据123456.789e5,转换成int、float型数据。
三、实验报告:
1.给出源程序(文本文件)和执行结果。
并回答下列问题。
(1)你的机器是大端方式还是小端方式?
大端模式,指的是数据的高字节保存在内存低地址中,而数据的低字节保存在内存高的地址中,数据由小向大增加,而数据从告往低位放,小端反之,
(2)内存变量是否按边界对齐?
结构成员在内存中的存储并不是想当然的一个接一个紧挨着排列下来的,由于提高数据读取速度的要求,计算机系统对内存中基本数据内省的存放存在内存对其就只,几要求这些数据的首地址必须是某个数的整数倍
2.分析下列源程序中的变量在机器内是如何表示的,以及各变量对应的十进制真值是多少,并说明无符号数和带符号整数的扩展操作方式是否相同?
各是如何进行的?
要求给出分析过程。
#include
voidmain()
{shortsi=-32768;
unsignedshortusi=si;
inti=si;
unsingnedui=usi;
无符号整数和带符号整数的扩展方式不同,无符号整数扩展高位补0,有符号位扩展高位补符号位。
3.给出源程序(文本文件)和执行结果,并回答下列问题:
(1)补码整数(如int型数)是否总能转换为等值的float类型数据?
为什么?
不能,因为int型数据有效位为32位,二float数据位数部分是23位,加上符号的高位1位,数据位是24位,所以int型精度比float型高,int型转换成float型时候有效位可能会丢失。
(2)float型数据是否总能转换成等值的double型数据?
为什么?
Double比float精度高,在转换过程中会有部分位数会补位导致最后的结果会不一样
(3)长数被截断成短数后可能发生什么现象?
为什么?
因为发生溢出二改变原数据的值得情况,因为长数的表示范围总数大于短数的范围,所以截断会发生溢出。
4.分析下列源程序的执行结果,并给出分析过程。
#include
voidmain()
{floatx=–1.5e38;
floaty=1.5e38;
floatz=1.0;
inti=(x+y)+z==x+(y+z);
printf(“%d\n”,i);
}
将两个表达式分开表示更能明显得表示出两个表达式有哪些不同的地方,我们能更直观的看出两个表达式哪些地方的不同。
(x+y)+z这个狮子的值为1.0,而x+(y+z)先计算(y+z)y=1.5e38,z=1.0的浮点想家需要先对阶,结果x+(y+z)=0,所以式子不相等。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3117301 田志阳