2018-2019-1 20165336 《信息安全系统设计基础》第二周学习总结

学到的知识点

  • 大多数机器上,表达式(3.14+1e20)-1e20求得的值是0.0,表达式3.14+(1e20-1e20)求得的值是3.14。原因:整数的表示虽然只能编码一个相对较小的数值范围,但是这种表示是精确的;而浮点数虽然可以编码一个较大的数值范围,但是这种表示只是近似的。
  • 信息储存:大多数计算机使用8位的块,或者字节作为最小可寻址的内存单位。
  • 十六进制表示法:一个字节由8位组成,值域范围0~255
  • 字数据大小:

字长为w位的机器而言,虚拟地址的范围为0~2w次方-1,程序最多访问2w次方个字节。
unsigned long、unsigned long int、long unsigned、long unsigned int表示一个意思。

  • 寻址和字节顺序:小端法最低有效字节在最前面的方式大端法最高有效字节在最前面的方式
  • 使用typedef来命名数据类型
  • 字符串被编码为一个以null(值为0)字符结尾的字符数组。
  • 二进制代码很少能在不同机器和操作系统组合之间移植,从机器的角度看,程序仅仅只是字节序列。
  • 移位运算:区分算术移位和逻辑移位
  • C语言浮点数:
    int → float 不会溢出但有可能舍入
    int/float → double 结果保留精确数值
    double → float 可能溢出为±∞,由于精确度较小也有可能被舍入
    float/double → int 向零舍入,可能溢出

错题整理

23.下面和代码可移植性相关的C语言属性有(ABC)
A .define
B .typedef
C .sizeof()
D .union
解析:#define可以定义宏使得变量可移植,typedef可以使得类型可移植,sizeof()使得不同类型长度可移植。

35.根据c89国际标准编译程序prog.c,下面正确的是(BC)
A .gcc prog.c
B .gcc -ansi prog.c
C .gcc -std=c89 prog.c
D .gcc -std=gnull prog.c
解析:课本p24 在国际c89标准编译程序中有gcc -ansi prog.c,gcc -std=c89 prog.c两条指令完成

12.short sx=-12345;
int x = sx;
unsigned ux = sx;
(ACD)
A .sx,x,ux的十六进制表示中的最后两个字节是0xcfc7
B .ux == 0xffffcfc7
C .ux == 0x0000cfc7
D .x == 0xffffcfc7
E .x == 0x0000cfc7
解析:课本p54 扩展一个数字的位,简单来说就是在不同字长的整数之间转换,而这种转换我们可以需要保持前后数值不变。当然将一个数据转换为字长更小的数据类型的时候,它的值肯定会发生变化。那么我们只能将较小的数据类型转换为较大的数据类型。比如将短整型short int 转换为整型 int。

原文地址:https://www.cnblogs.com/20165336kzq/p/9732209.html