2017-2018-1 20155318 《信息安全系统设计基础》第三周学习总结
教材学习内容总结
本周学习了第二章信息的表示和处理的教材内容:
- 最高有效字节在最前面的方式:大端法
- 最低有效字节在最前面的方式:小端法
- 最高有效位
Xw-1
即符号位,权重为-2^(w-1)
,是无符号表示中全中的负数,符号位为1时,表示值为负,设置为0时,值为非负。 - 布尔运算
^
,每个元素的加法逆元为自身,即对于任何值a,a^a=0
- ~ :逻辑运算NOT,非
- & : AND 与
- | : OR 或
- ^ : 异或
- C语言中浮点数相互转换:
- int->float:数字不会溢出,但可能被舍入
- int或float->double:能保留精确的数值
- double->float:值可能溢出成+∞或-∞,还可能被舍入
- float或double->int:值将会向零舍入
- IEEE标准:用
V=(-1)^s * M * 2^E
,其中s是决定正负数,M是尾数frac,E是k位阶码字段exp - 扩展一个数字的位:在不同字长的整数之间转换,同时又保持数值不变。
- 零扩展:无符号数转换为更大的数据类型,只需在开头填零。
- 符号扩展:有符号数转换为更大的数据类型,添加最高有效位的值。
- 截断数字:不用额外的位来扩展一个数值,而是减少表示一个数字的位数
教材学习中的问题和解决过程
- 问题1:整数运算的溢出情况
- 问题1解决方案:
- 算术运算溢出:完整的整数结果无法放到数据类型的字长限制中。执行C程序时,不会将溢出作为错误而发出警告信号。判断无符号运算是否溢出,例如s=x+y(s、x、y均为无符号数),唯一可靠的判断标准就是s<x或s<y。
- 计算机执行的“整数运算”实际上是一种模运算。表示数字的有限字长限制了可能的值的取值范围,结果运算可能溢出。
- 补码表示提供了一种既能表示负数也能表示正数的灵活方法,同时使用了与执行无符号算术相同的位级实现,无论运算数是以无符号形式还是补码形式表示,都有完全一样或者非常类似的位级行为。
代码调试中的问题和解决过程
-
问题1:运行statistics.sh脚本不能正常显示代码行数
-
问题1解决方案:暂未解决
-
问题2:运行课本代码时出现如下图所示问题
-
问题2解决方案:
错误是有符号数到无符号书的隐式转换导致的,这种强制转换是在代码没明确指示下发生的
代码托管
上周考试错题总结
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- [20155227](http://www.cnblogs.com/guyanlin/p/7607914.html)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 3/3 | |
第二周 | 100/100 | 1/2 | 3/6 | |
第三周 | 300/400 | 1/3 | 4/10 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:5小时
-
实际学习时间:4小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)