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小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2017-10-02 18:15  20155227辜彦霖  阅读(254)  评论(3编辑  收藏  举报