2017-2018-1 20155330 《信息安全系统设计基础》第3周学习总结
2017-2018-1 20155330 《信息安全系统设计基础》第3周学习总结
教材学习内容总结
- 字节顺序
- 小端法:最低有效字节在最前面
- 大端法:最高有效字节在最前面
- 布尔运算:&(与)、|(或)、^(异或)、~(非)
- 确定位级表达式的结果:将十六进制的参数扩展成二进制表示并执行二进制运算,然后转换回十六进制。
教材学习中的问题和解决过程
- 问题1:伪指令
gcc -m32 XXX.c
编译的程序可以在32位或64位机器上正确运行,gcc -m64 XXX.c
编译的程序只能在64位机器上运行,不应该是相反的吗? - 问题1解决方案:这是由于命令
gcc -m32 XXX.c
所生成的程序为32位程序,而gcc -m64 XXX.c
生成的程序为64位程序,命令所生成的程序取决于程序的字节数,即程序是如何编译的,而不是运行的机器类型,所以根据机器的向后兼容性,64位机器可以运行32位程序和64位程序,而32位机器只能运行32位程序。 - 问题2:对书上补码乘法的计算不是很清楚。
- 问题2解决方案:首先需要知道二进制乘法的有关原理,又有
(X*Y)补=(X)补*(Y)补
,所以可以先将相乘的两个二进制数相乘后取补即得结果。不过这种方法实际上计算时多少会有一点麻烦,但是很遗憾的是在参考了补码乘法,补码乘法计算详细解说一文之后我依然没能弄明白其中的诀窍,希望老师上课时能讲一讲如何直接对补码进行乘法运算,而不是通过转换的形式来得到结果。
家庭作业
选做的是2.58。
题目:编写过程is_little_endian,挡在小端法机器上编译和运行时返回1,在大端法机器上编译运行时则返回0。
过程代码:
int is_little_endian(){
int m = 1;
return *((char *)&m);//地址强制为char *型地址,并检测地址数据是否为最低字节,是则返回1,即为小端法机器
}
虚拟机运行结果
可以知道该虚拟机为小端法机器。
代码调试中的问题和解决过程
- 问题1:编译时出错。
- 问题1解决方案:应该是有哪里输入错误,将内容重新输入编译后能够运行。
代码托管
上周考试错题总结
暂无。
结对及互评
本周结对学习情况
- 20155321
- 结对学习内容
- 第2章 信息的表示和处理
其他(感悟、思考等,可选)
由于国庆放假没有在学校,所以基本上是把两周的的任务压缩到了一周。第二章的内容非常的多,而且部分内容靠自学比较难以理解,花费了许多时间在查找资料上,学习的结果并不是十分理想。不管怎么说假期的时间确实是没怎么学习,所以落下了很多东西,以至于课堂实践也没能按时完成,从这个星期开始好好学习吧。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第二周 | 63/63 | 1/2 | 8/18 | |
第三周 | 31/94 | 1/3 | 18/36 |
PS:因为是两周的内容一起进行学习所以对两周的相关代码进行了加减得到的上表。
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:15小时
-
实际学习时间:18小时