20144303 《信息安全系统设计基础》第三周学习总结

20144303 《信息安全系统设计基础》第三周学习总结

教材学习内容总结

信息的表示与存储

1、三种数字:

  • 无符号数:基于传统二进制表示法,表示大于或等于0的数字
  • 补码:编码是表示有符号数的最常见方式
  • 浮点数:表示实数的科学计数法的以2为基数的版本

2、整数溢出:

一个整数是一个固定的长度,它能存储的最大值是固定的,当尝试去存储一个大于这个固定的最大值时,将会导致一个整数溢出。

3、信息存储:

  • 大多使用8位的块,字节,作为最小存储器单位
  • 地址:存储器中每一个字节都有一个唯一的数字来作为其标识
  • 虚拟地址空间:即所有可能的地址的集合

4、进制转换:

二进制、八进制、十进制、十六进制(转换:以二进制作为中间变量)

5、字:

每台计算机都有一个字长,指明整数和指针数据的标称大小,因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。

当今大多数计算机已经是64位,书上的32位已经是几年前的数据了。

对于一个字长为w位的机器来说,虚拟地址的范围是0~2^w-1。程序最多访问2的w次方个字节。

6、gcc -m32/64:

可以在64位机上生成32位的代码。

7、数据大小:

不同数据类型在32位、64位机器中所占字节数不同,以c语言为例,long int&char *在32位机器中占4个字节但是在64位中占8个字节,所以同样的数据类型声明在不同位数机器上可能会导致错误

8、字节顺序:

打端法:小对小,大对大。

小端法:与大端法相反。

9、布尔代数:

逻辑运算:

  • 逻辑与(&&) 遇0为0;
  • 逻辑或(||) 遇1为1;
  • 逻辑非 遇0为1,遇1为0;

位运算:

  • 按位与(&) 二进制每一位遇0为0;
  • 按位或(|) 二进制每一位遇1为1;
  • 按位异或(^) 00=0,01=1,10=1,11=0;
  • 按位取反(~) 二进制每一位取反。

逻辑运算与掩码运算:

  • 逻辑运算结果是1或0,位运算结果是位向量
  • 如果对第一个参数求值就能确定表达式的结果,逻辑运算符就不会对第二个参数求值。

10、整数表示:

  • 程序语言中各数据类型都有最大值以及最小值,不在范围内会发生溢出
  • c,c++支持有符号数以及无符号数,java只支持无符号数
  • 无符号数编码:例如向量x,可以写成[Xn , ... , X0]。如果把向量X看做一个二进制数,那么后者就是他的无符号表示
  • 双射:对应每一个长度为w的位向量,都有一个唯一的值来与之对应
  • 补码编码:补码最高位为符号位,其为1时,代表该数值为负,其为0时,代表该数为非负(在计算机中基本所有的有符号数都使用补码表示)
  • java中对于整数数据类型的取值范围和表示有着十分明确的标准,这是java在任何机器上都能运行表现一致的原因所在
  • c语言中允许有符号数与无符号数之间进行转换,但其原则是底层的位保持不变。且c语言中支持不同数字类型之间做强制类型转换,例如(unsigned)u可以将u转换成一个无符号数
  • 零拓展:在一个无符号数开头简答的添加0,就可以将其转换成一个更大的数据类型
  • 符号拓展:在一个有符号数表示中添加最高有效位的值的副本,将一个补码数字转换成更大的数据类型

11、浮点数:

  • IEEE:V = (-1)s * M * 2E
  • s-符号 0为正,1为负
  • M-小数
  • E-阶数
  • 向偶舍入(默认):将数字向上或向下舍入,是的结果的最低有效数字为偶数。能用于二进制小数。
  • 向零舍入:把整数向下舍入,负数向上舍入。
  • 向下舍入:正数和负数都向下舍入。
  • 向上舍入:正数和负数都向上舍入。
  • float中:s、exp和frac字段分别为1位、k = 8 位和n = 23位,得到一个32位的表示
  • double中:s、exp和frac字段分别为1位、k = 11 位和n = 52位,得到一个64位的表示
  • 整数与小单精度数的转换:符号位+阶数加127的二进制数+去掉开头1位的数+十个0。

教材学习中的问题和解决过程

在学习“寻址和字节顺序”这部分内容时,输入P28 图2-4的代码,出现了错误。

刚开始,编译出现错误。

之后仔细检查代码,发现是代码打错了。打成了 #include <stdion.h>

修改后再次编译,还不是成功。

然后询问了同学,在这段代码中加入了主函数main。问题得以解决。

本周代码托管截图

其他(感悟、思考等,可选)

这周主要是课本上内容的学习,以及代码的实践。学习过程中,遇到了一点代码上的问题,后来通过询问同学都解决了。本周的学习还算比较轻松。最后,祝大家国庆节快乐!!!!!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 20/20
第二周 300/300 1/2 20/40
第三周 300/600 1/2 20/60

参考资料

posted @ 2016-10-02 19:31  20144303石宇森  阅读(260)  评论(5编辑  收藏  举报