20145209 《信息安全系统设计基础》第6周学习总结
20145209 《信息安全系统设计基础》第6周学习总结
教材学习内容总结
p20: 三种数字:无符号数、有符号数(2进制补码)、浮点数,因为算数运算的微妙细节引发漏洞,增加精度弥补细节可以减少漏洞。
p22: 进制转换,注意拿二进制作中间结果就好转了
p25: gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码
p26: 字节顺序是网络编程的基础,记住小端是“高对高、低对低”,大端与之相反就可以了。
p32: 能区分逻辑运算(结果是1或0)和位运算(结果是位向量),所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
p33: 掩码是位运算的重要应用,对特定位可以置一,可以清零
p38: 要用C99中的“long long”类型,编译是要用 gcc -std=c99
p39: 补码的利用寄存器的长度是固定的特性简化数学运算。想想钟表,12-1 等价于 12 + 11,利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算。
p44: 注意C语言中有符号数和无符号数的转换规则,位向量不变。想想第一章说的 信息就是“位+上下文”
p48: 怎么样让负数等于正数? 第二个是无符号运算的话,第一个也会被隐式地转换为无符号数。
p49: 0扩展和符号扩展
0扩展:多用于无符号数转换为一个更大的数据类型。只需在开头加上0即可。
符号扩展:多用于补码数字转换。最高有效位是什么,就添加什么。
p52: 深入思考一下代码和结果
运行代码会出现核心已转存的提示
p67: 关于整数运算的最后思考
p67: 浮点数有科学计数法的基础就不难理解,IEEE标准754
p68: 浮点数运算的不精确性与舍入
p70: IEEE浮点标准,float/double类型
p74: 整数与浮点数表示同一个数字的关系
p78: 整数与浮点数转换规则
教材学习中的问题和解决过程
教材中p28的代码按要求输入后出现错误:对“main”未定义的引用,之后编译了一个main函数,问题得到解决。
本周代码托管截图
其他(感悟、思考等,可选)
这次由于时间问题,练习没有都做完,会在课余时间补上。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |