20145321《信息安全系统设计基础》第三周学习总结
教材学习内容总结
第二章 信息的表示和处理
计算机存储和处理信息以二值信号表示。
三种最重要的数字表示法
- 无符号:基于传统的二进制表示法,大于等于0
- 补码:有符号整数
- 浮点数:实数的科学计数法的以二进制为基数的版本
p22: 二进制、八进制、十进制、十六进制进制转换(方法:使用二进制作中间结果)
十六进制:以0x或0X开头表示,字符A-F可大写、可小写、也可混用。
p25: gcc -m32 可以在64位机上(比如实验楼的环境)生成32位的代码
当没有-m32或-m64参数时,一般情况下会生成跟操作系统位数一致的代码
大端法——是高字节数据存放在低地址处,低字节数据存放在高地址处
p32: 能区分逻辑运算(结果是1或0)和位运算(结果是位向量),所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
p33: 掩码是位运算的重要应用,对特定位可以置一,可以清零
p38: 要用C99中的“long long”类型,编译是要用 gcc -std=c99
p39: 补码的利用寄存器的长度是固定的特性简化数学运算。想想钟表,12-1 等价于 12 + 11,利用补码可以把数学运算统一成加法,只要一个加法器就可以实现所有的数学运算。
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位的表示。
符号:s决定这个数是负数(s = 1)还是正数(s = 0),而对于数值0的符号位解释作为特殊情况处理。
尾数:M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε。
阶码:E的作用是对浮点数据加权,这个权重是2的E次幂(可能是负数)
教材学习中的问题和解决过程
P30页代码问题
p30页代码无法编译通过,在寻求同学帮助之后,明白是因为没有main函数。
代码托管
地址:http://git.oschina.net/5321/XASJ/tree/WEEK3
其他(感悟、思考等,可选)
- 本周的需要掌握大量的书本内容,不如前两周的内容简单易懂,需要仔细阅读书本,查找相关内容,反复练习习题才能搞清楚。目前还在练习课后习题。关于这章的内容,很多东西都是看起来很熟悉,我曾经学习过或者接触过,但现在还尚不能完全理解其中的知识内容。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3500行 | 30篇 | 300小时 | |
第一周 | 50/50 | 1/2 | 10/10 | |
第二周 | 120/170 | 1/3 | 20/30 | |
第三周 | 130/300 | 1/4 | 20/50 |