您的位置:首页 > 其它

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

2016-10-02 19:31 246 查看

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;

按位异或(^) 0^0=0,0^1=1,1^0=1,1^1=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



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



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





本周代码托管截图





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

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

学习进度条

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

参考资料

《深入理解计算机系统V2》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: