1、实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验 报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求实验批改完毕后, 任课老师将每门课程的每个实验项目的实验报 告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课 程的实验大纲。实验项目名称: 数据的表示 实验学时: 2 同组学生姓名: 无 实验地点:实验日期: 实验成绩:批改教师: 批改时间:一、 实验目的和要求熟悉数值数据在计算机内部的表示方式,掌握相关的处理语句。二、 实验仪器和设备硬件环境:IA-32软件环境:Linux ,C语言,gcc三、 实验内容与过程1、实验内容1.“ -2
2、 2”和“ -2 2u”的结果一样吗为什么请编写程序验证。2.运行下图中的程序代码,并对程序输出结果进行分析。3.运行下列代码,并对输出结果进行分析。#in elude void mai n()un io n NUMint a;char b4; num;=0x;printf(Ox%Xn, 2);4.请说明下列赋值语句执行后,各个变量对应的机器数和真值各是多少编写一段 程序代码并进行编译, 观察默认情况下, 编译器是否报 warning 。如果有 warning 信息的话,分析为何会出现这种 warning 信息。int a = 48;int b = -48;int c = 49;unsigne
3、d short d = 65539 ;short e = -32790 ;5.编译运行以下程序,并至少重复运行 3 次。void main()double x=, y=, z=;for (int i=0; i 4J)lb:SO 蕊tnclude voidvoid mai n()int a,c;a=(-22)1:0;c=(-22u)1:prin tf(%dn%dn,a,c);yscubuntu: -/zuoycyscQubuntu;cd zuoye yscubuntur-/zuoye$ gcc -o 1 l,c yscgubunt:-/zuoyeS Ji1o y刍匚(dubuntj:/zuaye
4、$ |正数的原码,反码,补码都一样。而负数在计算机里是按补码存放和运算的。 -2在内存中的存储方式为 1111,1111,1111,1111,11111,11111,1111,1110B 即 fffffffeH,最高位为 符号位,2 在内存中的存储方式为 0000,0000,0000, 0000,0000, 0000,0000, 0010B 即2H,最高位为符号位,2u在内存中存储的方式为 0000, 0000,0000,0000,0000, 0000, 0000,0010B即2H,最高位不再是符号位。所以 -22是符号位的比较, 即-22是正确的。-22u是有符号数和无符号数之间的比较,此时
5、编译器会把有符号数自动转无符号数,所以-2=2。2,是有符号数的比较,即 2+( -2)=f f f f f f f eH+f f f f f f f e HRF FFFFFFCH=-4补,最高位符号位溢出,所以证明被减数的符号是负号,即 -2.有符号数和无符号数的比较。系统会自动把有符号数转换成无符号数。fffffffeH=94Dc,所以输出 unsigned short is 1#in cludec)1:printf( “ unsigned int is %” ,d); d=(b (3)O O 0 护buntu: Ttnoye yscgubjntu:cd zuoye yscubdntu:/
6、zuoye$ gcc o 1 l*c ycubjntu:-/zuOyeS . j1yscfcubuntu:-/zuoyeS gcc -o 2 2*c get: error: 2,c: No such file or directory gcc: fatal error* no input files cunfjlldtlofi ter ininated * yscubuntu: -/zuoye$ .门bash: tJ2: No such Tile or directory yscubjntu:-/zuoye$ gcc -o 2 2,cgcc: error: 2 *c: Na uch file
7、or dLrectory gcc: ratal error: no Input tiles coripilation terminated,ysegubuntu-/zuoyeS gcc *o 3 3c yscubuntui/zuoyc$ ,/30x34yscgubdfitu: -/zuoye$由于在union共用体当中,int a和char b4数据公用同一段内存地址,而此时 a和b 同时占用四个字节,所以当执行 =Ox;同时b也会被赋值,b的内存示意图如下:b的值8765432b的地址b0b1b2b3由上图可知执行 printf(0x%Xn会输出0x34。现在解释为什么会出现表中的情况对于数
8、 组来说,下标越小地址越小,下标越大地址越大,而 a=0x这个值中,1和2分别在最高位和次高位,它就会存储在下标大的 b3中,以此类推,便可以得到表中的数据。这也证明了我的32位Ubuntu是小端存储(字数据的高字节存储在高地址中,而字数据的低字节则存 储在低地址中)。(4)Mb-geditex#讣 匚 ludees tdi(j_hA voidnain()int a=214748364S; tnt b=-21474E364B; int c=21474S3549;unsigned short d=65539: short 32790;prtntf(r %dnm); printfCSdnnfb);printf (h 5fidn戊; prlntf (F sdn,上); printf Cr Sdy n pe);GC核 * yscfubuntu: */zuoyeint d=214746304a;A4.c:b:3; warning: this dectnal constant ts unsigned only tn iso 匚沁 enable by defaulttnt b-214M&3648:4,c:6:3: this c
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1