实验报告三数据的表示 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 计算机系统基础实验报告 学院 信电学院 专业 计算机科学与技术 班级 计算机1401 学号 140210110 姓名 段登赢 实验时间: 1. 实验名称:数据的表示2 2. 实验目的和要求: (1)实验目的:熟悉数值数据在计算机内部的表示方式,掌握相关的处理语句。 (2)实验要求:说明你做实验的过程(重要步骤用屏幕截图表示);提交源程序;分析 并回答问题。 3. 实验环境(软、硬件): 要求:详细描述实验用的操作系统,源代码编辑软件,相关硬件环境及所使用的GCC 编译器的信息。 4. 实验内容: (1)请说明下列赋值语句执行后,各个变量对应的机器数和真值各是多少?编写一段程 序代码并进行编译,观察默认情况下,编译器是否报warning。如果有warning信息的话 ,分析为何会出现这种warning信息。 int a = 2147483648; int b = -2147483648; int c = 2147483649; unsigned short d = 65539; short e = -32790; (2)完成书上第二章习题中第40题,提交代码,并在程序中以十六进制形式打印变量u 的机器数。 (3)编译运行以下程序,并至少重复运行3次。 void main() { double x=23.001, y=24.001, z=1.0; for (int i=0; i<10; i++) { if ((y-x)==z) printf("equal\n"); else printf("not equal\n"); x += z; y += z; printf("%d, %f , %f\n", i, x, y); } } 要求: (1)给出每次运行的结果截图。 (2)每次运行过程中,是否每一次循环中的判等结果都一致?为什么? (3)每次运行过程中,每一次循环输出的i、x和y的结果分别是什么?为什么? 5. 实验结果及分析: (1) 实验分析: 机器数就是数字在计算机中的二进制表示形式,其特点一是符号数字化,二是其数的大 小受机器字长的限制。将带符号位的机器数对应的真正数值称为机器数的真值 int a = 2147483648的机器数是1000 0000 0000 0000 0000 0000 0000 0000B int b = -2147483648的机器数是 1000 0000 0000 0000 0000 0000 0000 0000B int c = 2147483649的机器数是 1000 0000 0000 0000 0000 0000 0000 0001B unsigned short d = 65539的机器数无法表示 short e = -32790的机器数无法表示 int类型在32位计算机中占4个字节,即32位。又因为正数的补码是其本身,所以int 类型能表示的所有正数为:0,000 0000 0000 0000 0000 0000 0000 0000B到0,111 1111 1111 1111 1111 1111 1111 1111B即0到+2147483647。而负数的补码是除符号位外各位取反最后加一而来。所以int 类型所能表示的所有负数为:0,000 0000 0000 0000 0000 0000 0000 0000B(- 0D的补码)到1,111 1111 1111 1111 1111 1111 1111 1111B即0到- 2147483647D。而32位二进制数能表示的所有值为2的32次方个,而从- 2147483647D到+2147483647D总共是2的32次方减一个数,而少的这个数就是1000 0000 0000 0000 0000 0000 0000 0000B(- 0D的补码),而任何数的原码都不能在转换成补码时成为这个数,我们人为的把他规定 为-2147483648所以int 类型的取值范围为- 2147483648到+2147483647,所以题目中的b是正确的,并且不会发生溢出。而题目中的 a=2147483648其实已经超出int类型的最大范围,但是a=2147483648=2147483647+1=0,1 11 1111 1111 1111 1111 1111 1111 1111B+1B=1000 0000 0000 0000 0000 0000 0000 0000B= -2147483648,而- 2147483648又在int类型的取值范围内,所以也不会溢出,如果此时打印输出a的十进制 就是-2147
- 粉丝: 168
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助