20145331 《信息安全系统设计基础》第3周学习总结
教材学习内容总结
2.1
1、三种重要的数字表示:无符号、补码、浮点数;"长"整数要使用机器的全字长;64位整数对于32位机器来说要把这种数据类型的操作编译成执行一系列32位操作的代码。
2、字节顺序:多字节对象都被存储为连续的字节序列,对象的地址为字节中最小的地址。
3、小端法:低有效字节放在最前面。 (低对低,高对高) 大端法:最高有效字节在最前面。
4、布尔代数、位向量:位向量就是有固定长度w、由0和1组成的串。应用:位向量掩码。
5、位级运算:与、或、非、异或。
6、逻辑运算:所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
2.2
1、无符号数编码范围:0~2^w-1(UMax) w为长度。
2、补码编码范围:-2^(w-1)~2^(w-1)-1 (TMin~TMax)。
3、有符号数无符号数转换:数值可能会变,但位模式不变。
4、创建无符号常量,加后缀字符U、u。
5、一个运算包含有符号数和无符号数,会把有符号数强制转换为无符号数,并假设这两个数非负。
6、扩展
a、0扩展:对象为无符号数,前面补0。
b、符号扩展:对象为补码,原补码最高位是几就在前面补几。
2.3
1、溢出:超过字长限制就会发生溢出,但溢出是不会报错的。
2、补码加法:包含四种模式:
a、正溢出:和减少2^w。
b、负溢出:和增加2^w。
c、d:正常情况直接相加。
2.4
1、增加二进制表示的长度可以提高精度。
2、IEEE浮点表示和三个参数:用V = (-1)s M 2E的形式来表示一个数。
符号:s决定这个数是负数还是正数。
尾数:M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε。
阶码:E的作用是对浮点数据加权,这个权重是2的E次幂(可能是负数)。
3、三种情况:
1、规格化的值:E=e-bias bias=2^(k-1)-1 M=1+f 隐含的以1开头的表示(第一位是1就不用显示,获得一个额外精度位)
2、非规格化的值:E=1-bisa M=f
3、特殊值:小数域全为0时,s=0是正无穷,s=1是负无穷;小数域不为0,“NaN”
4、舍入:(共四种)默认方式:向偶数舍入:找一个最接近的匹配值、将数字向上/下舍入,使结果最低有效数字是偶数。
学习中的问题和解决过程
1、p74将整数转换为浮点数时就是算不对:
发现错误在构造小数段这里:把整数改为二进制的科学计数法表示,舍弃1之后,我想当然地用符号扩展的知识在前面开始补0,最后发现要在末尾补位,不过为啥要在后面补。。。
2、p58表格情况2、3不知道有什么区别,只是正负不同么?
3、忘记怎么在开源中国里创建新的项目了,这几天一定搞明白创建好重新上传。
本周代码托管截图
https://git.oschina.net/20145331/java-besti-is-2015-2016-2-20145331.git
其他(感悟、思考等,可选)
国庆爱学习,越学越开心!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 20/20 | 1/2 | 13/20 | |
第二周 | 50/70 | 1/3 | 15/38 | |
第三周 | 100/170 | 1/4 | 20/60 |