2017-2018-1 20155339 《信息安全系统设计基础》第三周学习总结
2017-2018-1 20155339 《信息安全系统设计基础》第三周学习总结
教材学习内容总结
信息的表示和处理
- 数字表示的三种形式
- 无符号:无符号补码基于传统的二进制表示法,表示大于或等于零的数字。
- 补码:补码编码表示有符号整数,可以为正也可以为负。
- 浮点数:浮点数编码表示实数的科学计数法的以2为基数的版本.
- 计算机最小的可寻址的存储器单位——字节
- 对于一个字长为w位的机器而言,虚拟地址的范围为0~2^w-1,程序最多访问2的w次方个字节。
- 大多数64位机器也可以运行为32位机器编译的程序,可以用
gcc -m32 prog.c
来编译。另一方面,若使用gcc -m64 prog.c
伪指令那么只能在64位机上可以编译成功。 - 最低有效字节在最前面的方式称为小端法,最高有效字节在最前面的方式称为大端法。
- 小端是“高对高、低对低”,大端与之相反。
- 二进制值是计算机编码、存储和操作信息的核心,所以围绕数值0和1的研究已经演化出了丰富的数学知识体系。
- 布尔运算:~位非、&位与、|位或、^异或;&&逻辑与;||逻辑或;!逻辑非。
- 将负数转化成无符号数可能会得到0.如果转换的无符号数太大以至于超出了补码能够表示的范围,可能会得到TMax。
- 补码使符号位可以和有效值部分一起参与运算,来简化运算规则,同时减法运算转换为加法运算。
- 扩展一个数字的位,就是在不同字长的整数之间转换,同时又保持数值不变。
- 零扩展:将一个无符号数转换为更大的数据类型,只需在开头填零即可。符号扩展:将一个有符号数转换为更大的数据类型,添加最高有效位的值。
- 截断数字:不用额外的位来扩展一个数值,而是减少表示一个数字的位数。
- 两种浮点数类型,float和double。最常见的浮点数表示方法由IEEE标准754定义的,也能表示正无穷、负无穷和NaN。
教材学习中的问题和解决过程
(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )
- 在老师的指导书中有这样一句话:小端是“高对高、低对低”,这句话没懂什么意思,上网搜也没有查到有用的或者相关的信息。
代码调试中的问题和解决过程
-
问题1:在练习课本p32的代码test_show_bytes.c时,刚开始把每个函数都分开编写,会出现对很多函数未定义的引用的问题。
-
问题1解决方案:用-lm命令来连接库,其他错误没有了,但是main函数未定义的引用这个问题依旧存在,后来把所有函数写到一起并且改写了main函数,之后就可以了,问题及解决后的结果如下。
-
问题2:在学习书上p38的例题时,发现奇数就会出错,中间的数会变成零。
-
问题2解决方案:因为inplace_swap函数中是通过异或来交换的那么当都指向一个数字的时候,异或的结果就是0。解决办法是将for循环的控制条件改为first<last,得到解决。如下图:
代码托管
上周考试错题总结
无
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- 20155306
- 结对照片
- 结对学习内容
- 第二章内容
其他(感悟、思考等,可选)
这周的学习内容虽然看起来似曾相识,但是学起来还是很费劲的,最近可能各种任务,使得学习能力有所下降,感觉还是没有找到适合自己的自学方法。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 4/100 | 1/1 | 23/20 | |
第二周 | ? | 1/2 | 20/43 | |
第三周 | 327/416 | 1/3 | 15/61 | |
第四周 | 327/416 | 1/4 | 17/78 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:10小时
-
实际学习时间:15小时
-
改进情况:还是需要找到适合这种学习模式的方法。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)