《信息安全系统设计基础》 第三周学习总结
20145224 《信息安全系统设计基础》第三周学习总结
教材学习内容总结
p20: 三种数字:无符号数、有符号数(2进制补码)、浮点数
无符号数:基于传统二进制表示法,表示大于或者等于零的数字。
补码:表示有符号整数的最常见方式
浮点数:表示实数的科学计数法的以二为基数的版本。
p22: 二进制、八进制、十进制、十六进制进制转换(方法:使用二进制作中间结果)
十六进制:以0x或0X开头表示,字符A-F可大写、可小写、也可混用。
p25: gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码
当没有-m32或-m64参数时,一般情况下会生成跟操作系统位数一致的代码
p26: 字节顺序是网络编程的基础,记住小端是“高对高、低对低”,大端与之相反就可以了。注:小端法——指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。
大端法——是高字节数据存放在低地址处,低字节数据存放在高地址处
p32: 能区分逻辑运算(结果是1或0)和位运算(结果是位向量),所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
p33: 掩码是位运算的重要应用,对特定位可以置一,可以清零
p35:
p38: 要用C99中的“long long”类型,编译是要用 gcc -std=c99
p39: 补码的利用寄存器的长度是固定的特性简化数学运算。想想钟表,12-1 等价于 12 + 11,利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算。
p44: 注意C语言中有符号数和无符号数的转换规则,位向量不变。想想第一章说的 信息就是“位+上下文”
p48: 怎么样让负数等于正数? 信息安全的逆向思维
p49: 0扩展和符号扩展
p54: 如何让整数运算溢出?如何避免? p62例子看看
p67: 浮点数有科学计数法的基础就不难理解,IEEE标准754
p68: 浮点数运算的不精确性与舍入
p70: IEEE浮点标准,float/double类型
IEEE浮点格式定义了四种不同的舍入方法:
向偶舍入(默认):将数字向上或向下舍入,是的结果的最低有效数字为偶数。能用于二进制小数。
向零舍入:把整数向下舍入,负数向上舍入。
向下舍入:正数和负数都向下舍入。
向上舍入:正数和负数都向上舍入。
C提供两种浮点类型:float和double,在支持IEEE浮点标准的机器上分别表示单精度和双精度浮点数。
float中:s、exp和frac字段分别为1位、k = 8 位和n = 23位,得到一个32位的表示;
double中:s、exp和frac字段分别为1位、k = 11 位和n = 52位,得到一个64位的表示。
p74: 整数与浮点数表示同一个数字的关系
p78: 整数与浮点数转换规则
从int转换成float:数字不会溢出,但有可能舍入
从int或float转换成double:能够保留精确的数值
从double转换成float:可能溢出为正负无穷,由于精确度变小也有可能被舍入
从float或double转换成int:值将会向零舍入,进一步来说值可能溢出
教材学习中的问题和解决过程
上周的时候我对静态库、动态库以及mekefile的具体操作方法并没有弄的很清楚,在这周的课堂上老师具体地介绍了相应的操作步骤,我也在自己的电脑中试验了一遍:
·静态库
·动态库
·makefile
还有课本第二章的一些代码:
代码调试中的问题和解决过程
很多人都发现了在VirtualBox环境下使用虚拟机无法全屏,窗口实在是太小了,在终端执行指令时还可以接受要是想要在虚拟机中浏览个网页那可就太难受了。我在这里就教大家一个小方法:
·启动虚拟机,打开“设备”选项卡,点击“安装增强功能”。
·安装好后重启虚拟机,点击“视图”->“虚拟显示屏1”选择你想要的分辨率即可。
·除此之外,安装增强功能还能解决虚拟机和Windows系统间双向复制粘贴的问题哟。
本周代码托管链接
https://git.oschina.net/Kevin_s/Linux_C.git
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目 标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 |