2017-2018-1 20155227 《信息安全系统设计基础》第三周学习总结
2017-2018-1 20155227 《信息安全系统设计基础》第三周学习总结
教材学习内容总结
第二章 信息的表示和处理
-
三种数字表示:无符号数、有符号数(2进制补码)、浮点数
-
溢出:计算机的表示法是用有限数量的位来对一个数字编码,当结果太大以至不能表示时,会溢出
-
整数运算:编码的数值范围较小,精确;浮点运算:数值范围较大,近似,不可结合
2.1 信息存储
- 1个字节为8位,大多数计算机将1个字节作为最小的可寻址的存储器单位。(单片机除外)
- 字节顺序:字节顺序是网络编程的基础,是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。
- 小端法:低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。
- 大端法:高字节数据存放在低地址处,低字节数据存放在高地址处。
- 机器级程序将存储器(一般指内存)视为一个非常大的字节数组,称为虚拟存储器。
- 存储器的每个字节由一个唯一的数字标识,称为地址,所有可能地址的集合称为虚拟存储空间。
布尔代数
逻辑运算
所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
逻辑与(&&):遇0为0;
逻辑或(||):遇1为1;
逻辑非 (!):遇0为1,遇1为0;
位运算
按位与(&):二进制每一位遇0为0;
按位或(|):二进制每一位遇1为1;
按位异或(^):0^0=0,0^1=1,1^0=1,1^1=0;
按位取反(~):二进制每一位取反。
掩码运算
掩码运算:掩码是位运算的重要应用,这里掩码是一个特定位模式,表示从一个字中选择一个位的集合。对特定位可以置一,可以清零。
移位运算
逻辑右移:在左端补k个0,多用于无符号数移位运算
算术右移:在左端补k个最高有效位的值,多用于有符号数移位运算。
Java中用>>表示算术右移,用>>>表示逻辑右移。
移位运算优先级小于算术运算。
2.2 整数表示
-
算术运算溢出:完整的整数结果无法放到数据类型的字长限制中。
-
执行C程序时,不会将溢出作为错误而发出警告信号。
-
判断无符号运算是否溢出,例如s=x+y(s、x、y均为无符号数),唯一可靠的判断标准就是s < x或s < y。
有符号数和无符号数
- 转换原则:底层的位保持不变
(1)有符号数→无符号数
非负数——保持不变
负数——转换成大正数
(2)无符号数→有符号数
以2^*(w-1)为界限:
小于它——保持不变
大于它——转换为负数值
[0,2(w-1))范围内的数字,无符号和补码表示相同;范围之外的,需要加上或者减去2w
- 运算时若同时存在有符号数和无符号数,会隐式的将有符号数强制类型转换为无符号数,并且假设这两个数都是非负的。
2.4 浮点数
浮点表示对形如 V=x*2^y
的有理数进行编码;适用于:非常大的数字(|V|>>0)、非常接近于0的数字(|V|< < 1)、实数运算的近似值
;
浮点数的位表示划分为三个字段,分别对这些值进行编码:
一个单独的符号位 s 直接编码符号 s。
k位的阶码字段 exp = e(k-1)……e1e0编码阶码 E。
n位小数字段 frac = f(n-1)……f1f0编码尾数 M,但是编码出来的值也依赖于阶码字段的值是否等于0。
IEEE浮点格式定义了四种舍入方法:
向偶舍入(默认):将数字向上或向下舍入,是的结果的最低有效数字为偶数。能用于二进制小数。
向零舍入:把整数向下舍入,负数向上舍入。
向下舍入:正数和负数都向下舍入。
向上舍入:正数和负数都向上舍入。
浮点加法
- 浮点加法是可交换的
- 浮点加法不具结合性
- 大多数值的浮点加法都有逆元,除了无穷和NaN。
- 浮点加法满足单调性
浮点乘法
- 浮点乘法是可交换的
- 浮点乘法不具有结核性
- 浮点乘法的单位元为1.0
- 浮点乘法在加法上不具备分配性
- 在一定条件下满足单调性
C语言中的浮点数
int、float、double的相互转换:
int → float 不会溢出但有可能舍入
int/float → double 结果保留精确数值
double → float: 可能溢出为±∞,由于精确度较小也有可能被舍入
float/double → int 向零舍入,可能溢出。
教材学习中的问题和解决过程
- 问题1:第二章的公式太多,理解记忆有难度。
- 问题1解决方案:希望老师上课时能以一两个公式为例来讲解一下,方便理解。
代码调试中的问题和解决过程
无
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1及原因,理解情况
- 错题2及原因,理解情况
- ...
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
-[20155318](http://www.cnblogs.com/lxy1997/)
- 结对照片
- 结对学习内容
- XXXX
- XXXX
- ...
其他(感悟、思考等,可选)
本周学习的知识是信息相关的基础知识,涉及到的公式较多,需要记忆的知识点也很多,还需要慢慢理解消化。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 133/133 | 1/1 | 8/8 | |
第三周 | 159/292 | 1/3 | 10/18 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:15小时
-
实际学习时间:10小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)