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

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

教材学习内容总结

  1. 在内存中排列字节的方式:小端法和大端法
  2. B2U:Binary to Unsigned
  3. 最高有效位Xw-1也成为符号位,他的权重为-2^(w-1),是无符号表示中全中的负数,符号位被设置为1时,表示值为负,当设置为0时,值为非负。
  4. w位补码所能表示的值的范围为TMin=-2(w-1)到TMax2(w-1)-1;
  5. 强制类型转换的结果保持位值不变,只是改变了解释这些位的方式。
  6. 表达式行x<y和表达式x-y<0会产生不同的结果。
  7. 在二进制小数中,增加二进制表示的长度可以提高表示的精度。
  8. IEEE浮点表示。;

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

  • 问题1:计算机原理中的位向量
  • 问题1解决方案:位向量就是有固定长度w,由0和1组成的串。给出一个位向量并集的例子:a=[01101001]表示{0,3,5,6},b=[01010101]表示{0,2,4,6}。最终二者并集=[01000001]={0,6}.
  • 问题2:
short int v = -12345;
unsigned short uv = (unsigned short) v;

v=-12345;uv=53191

  • 问题2解决方案:因为-12345的16位补码表示与53191的16位无符号数表示是一样的
[1100111111000111]

即强制类型转的结果保持位值不便,只是改变了解释这些位的方式。

  • 问题3:IEEE的浮点表示:
  • 解决方案:
    具体的看书看了几遍还是无法理解,所以只能借助例子来理解,希望老师可以讲解一下
已知:整数3490593(16进制表示为0x354321)。求:其对应的浮点数3490593.0的二进制表示。

解法如下:
先求出整数3490593的二进制表示:
H: 3 5 4 3 2 1 (十六进制表示)
B: 0011 0101 0100 0011 0010 0001 (二进制表示)
│←───── 21────→│

即:
1.1010101000011001000012×221
可见,从左算起第一个1后有21位,我们将这21为作为浮点数的小数表示,单精度浮点数float由符号位1位,指数域位k=8位,小数域位(尾数)n=23位构成,因此对上面得到的21位小数位我们还需要补上2个0,得到浮点数的小数域表示为:
1 0101 0100 0011 0010 0001 00

float类型的偏置量Bias=2k-1-1=28-1-1=127,但还要补上刚才因为右移作为小数部分的21位,因此偏置量为127+21=148,就是IEEE浮点数表示标准:
V = (-1)s×M×2E
E = e-Bias
中的e,此前计算Bias=127,刚好验证了E=148-127=21。

将148转为二进制表示为10010100,加上符号位0,最后得到二进制浮点数表示1001010010101010000110010000100,其16进制表示为:
H: 4 A 5 5 0 C 8 4
B: 0100 1010 0101 0101 0000 1100 1000 0100
|←──── 21 ─────→ |
1|←─8 ─→||←───── 23 ─────→ |

这就是浮点数3490593.0(0x4A550C84)的二进制表示。

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

  • 问题1:出现内存错误
  • 问题1解决方案:这说明了从有符号数到无符号数的隐式强制转换,因为当length=0时,length-1为负数,结果得到了UMAX,使得比较总是为真,所以将length声明为int即可。

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [20155205](http://www.cnblogs.com/haoliberale/p/7613748.html)
   - 结对学习内容
    -第二章课本内容 
    -课下练习题

结对照片:

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

这一次课本的学习我是先大体看了一遍课本,然后按照蓝墨云上第二章的题目来仔细的看了知识点,第一次做大约用了3个小时。我想如果我不去做题,好多知识都是模棱两可的过去,即使是这样我也还有好多是不会的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第三周 132/296 2/22 8/18

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

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

参考资料

原文地址:https://www.cnblogs.com/xzh1996/p/7668839.html