您的位置:首页 > 其它

2017-2018-1 20155217 《信息安全系统设计基础》第三周学习总结

2017-09-30 14:11 405 查看

2017-2018-1 20155217 《信息安全系统设计基础》第三周学习总结

教材学习内容总结

无符号编码基于传统的二进制表示法,表示大于或等于0的数字。补码编码是表示有符号整数最常见的方式,有符号整数是可以为正货为负的数字。浮点数编码是表示实数的科学计数法的以2为基数的版本。

大多数64位机器可以运行32位机器编译的程序,这是一种向后兼容。例如,当程序prog.c用如下伪指令编译
gcc -m32 prog.c
该程序就可以在32位或64位机器上正确运行;而该程序用
gcc -m64 prog.c
运行后,只能在64位机器上运行。

小端法:高对高,低对对;大端法:从视觉上,是这次阅读的顺序,与小端法相反。使字节顺序变得可见的三种方式:不同类型的机器之间通过网络传送二进制数据时,网络应用程序的代码编写必须遵守已建立的关于字节顺序的规则;使用反汇编器,处理整数数据的字节序列的存储字节顺序问题;当编写规避正常的类型系统的程序时。

逻辑运算容易与位运算相混淆,但他们的功能是完全不同的。逻辑运算认为所有非零的参数都表示true,而参数0表示false。他们返回0或1,分别表示结果为true或false。而按位运算只有在特殊情况下,也就是参数被限制为0或1时,才和与其对应的逻辑运算有相同的的行为。

位运算:
|:或
&:与
~:取反
^:异或

逻辑运算:
逻辑运算符:||(或)、&&(与)、!(非)


要用C99中的“long long”类型,编译时要用
gcc -std=c99


有符号数和无符号数之间的转换:

处理同样字长的有符号数和无符号数之间相互转换的一般规则:
数值可能会改变,但是位模式不变。

c语言允许无符号数和有符号数之间的转换。转换的原则是底层的位表示不变。

当从无符号数转换为有符号数是,效果是应用函数U2T,从有符号数转化为无符号数时,应用函数T2U,其中w表示数据类型的位数。

负数和正数相等的情况:u=2147483648 =-2147483648
(当输出分别为无符号形式和有符号形式时)


在负数x后加上U,可以使其转换为(2^w+x),就可以让负数等于正数

对于范围-2^(w-1)≤x<-2^(w-1)内的x,补码的非运算如下:

1.x=-2^(w-1):补码的非为-2^(w-1)
2.x>-2^(w-1):补码的非为-x


求位级补码非的方法:

对每一位求补,再对结果加1
建立在将位向量分为两部分的基础之上的


无符号乘法:

两个数x、y相乘且x、y的位数为w,则结果的位数为2w。


补码乘法:

同无符号乘法。 若为截断后的结果,则取结果的后w位作为计算结果。
注意:无符号运算和补码运算在“+”、“-”、“*”在位级上有相同的结果。


IEEE浮点数表示:

表示形式为:V = (-1)^s * M * 2^E

符号:s决定这个数是负数(s = 1)还是正数(s = 0),而对于数值0的符号位解释作为特殊情况处理。

尾数:M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε。

阶码:E的作用是对浮点数据加权,这个权重是2的E次幂(可能是负数)。

根据阶码的值,可分为一下三种情况:

情况一:规格化的值 (当阶码字段不全为0或全为1时)
E = e-Bias
Bias = 2^(k-1)-1
M = 1+f

情况二:非规格化的值 (当阶码字段全为0时)
E = 1-Bias
Bias = 2^(k-1)-1
M = f

情况三:特殊值 (当阶码字段全为1时)
当小数域全为0时, 当s=1时,为-∞;当s=0时,为+∞。
当小数域不全为0时,为NaN。


浮点数的舍入

有四种情况分别是:

向偶数舍入(默认)
向零舍入
向下舍入
向上舍入


浮点运算

浮点加法:不满足结合性、满足单调性

浮点乘法:不满足结合性、满足单调性,在加法上不满足分配性

教材学习中的问题和解决过程

问题1:

length=0时会出现存储器错误,这是因为参数length是无符号的,计算0-1将进行无符号运算,等价于模数加法,结果得到UMax。因为任何数都是小于等于UMax的,所以<=比较总是为真,代码将访问数组a的非法元素。

问题1解决方案:

将length声明为int类型

将for循环测试条件改为i>length

代码调试中的问题和解决过程



代码托管



上周考试错题总结



结对及互评

点评模板:

博客中值得学习的或问题:

xxx

xxx

...

代码中值得学习的或问题:

xxx

xxx

...

其他

本周结对学习情况

- [20155236](http://www.cnblogs.com/fcgfcgfcg/)
- 结对照片
- 结对学习内容
- 浮点加法:
浮点加法是可交换的。
浮点加法不具有结合性,这是缺少的最重要的群属性。
浮点加法满足了单调性属性:如果a≥b,那么对于任何a、b以及x的值,除了NaN,都有x + a ≥ x + b。无符号或补码加法不具有这个实数(和整数)加法的属性。
- 浮点乘法:

浮点乘法是可交换的
浮点乘法不具有结合性
浮点乘法的单位元为1.0
浮点乘法在加法上不具备分配性
- ......

其他(感悟、思考等,可选)

“精读”背后要多付出的精力、时间,与泛读甚至浏览完全不在同一个层次上。第二章一共60页,坚持每一页的每一句话都看到心里去,说不乏味不疲倦是不可能的。尤其是在假期期间,想要静下心来太难了,但是细读的收获又是显著而充实的。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周85/851/16/6
第二周85/851/16/6
第三周91/1763/412/18
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

计划学习时间:16小时

实际学习时间:12小时

改进情况:

(有空多看看现代软件工程 课件

软件工程师能力自我评价表)

参考资料

《深入理解计算机系统V3》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐