20145238 《信息安全系统设计基础》第3周学习总结
教材学习内容总结
· 三种数字:无符号数、有符号数(2进制补码)、浮点数,信息安全系同学从逆向角度考虑为什么会产生漏洞
答:①会发生溢出②浮点数的表示是近似值。
· 进制转换,注意拿二进制作中间结果就好转了
习题2.4
注意要将64化为十六进制再与其做加法。
· gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码
·字节顺序是网络编程的基础,记住小端是“高对高、低对低”,大端与之相反就可以了。
小端法——最低有效字节在最前面
大端法——最高有效字节在最前面
· 能区分逻辑运算(结果是1或0)和位运算(结果是位向量),所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
· 掩码是位运算的重要应用,对特定位可以置一,可以清零
习题2.11
当一组数组为奇数长度时,两个指针也就相同因而x^x==0,所以就会把中间元素设成零。
· 要用C99中的“long long”类型,编译是要用 gcc -std=c99
·int型可以用2个字节的数字来实现
·long的大小可以用4个细节的数字来实现
·long long要用八个字节来表示
· 补码的利用寄存器的长度是固定的特性简化数学运算。想想钟表,12-1 等价于 12 + 11,利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算。
关于补码的两点注意:
·补码的范围是不对称的
·最大的无符号数值刚好比补码的最大值的两倍大一点
· 注意C语言中有符号数和无符号数的转换规则,位向量不变。想想第一章说的 信息就是“位+上下文”
· 0扩展和符号扩展
·零扩展:将一个无符号数转换为一个更大的数据类型,在表示的开头添加0
·符号扩展:讲一个补码数字转换为一个更大的数据类型可以执行符号扩展
· 浮点数有科学计数法的基础就不难理解,IEEE标准754
· 浮点数运算的不精确性与舍入
·IEEE浮点标准,float/double类型
·IEE浮点标准: 用V=(-1)^s X 2^E X M 来表示一个数
·符号:s决定这个数是正还是负。0的符号位特殊情况处理。
·阶码:E对浮点数加权,权重是2的E次幂(可能 为负数)
·尾数:M是一个二进制小数,范围为12-ε或者01-ε(ε=1/2的n次幂)
·编码规则:单独符号位s编码符号s,占1位 k位的阶码字段exp编码阶码E n位小数字段frac编码尾数M(同时需要依赖阶码字段的值是否为0)
·单精度(float),k=8位,n=23位,一共32位;双精度(double)
·P28页 编写main函数测试:
p35 练习2.11
·输入奇数个
·输入偶数个
·程序代码
·p44 代码放到一个main函数中
·p47-49代码放到一个main函数中
教材学习中的问题
在编辑最后一个代码的时候出现了问题
发现是因为头文件没有加对,之后改正了,成功
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 |
参考资料
- 《深入理解计算机系统V2》学习指导
- ...