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

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

教材学习内容总结

  • 字长决定虚拟地址空间的最大大小(对于一个字长为w位的机器,虚拟地址的范围为0~2^w-1)。
  • 小端法:高位放高地址;大端法:高位放低地址。
  • 即使是相同的一段代码,在不同的机器类型使用不同、不兼容的指令,因此二进制代码是不兼容的。
  • 位向量常用于集合的表述(状态压缩常用)。
  • 对于无符号数,右移必须是逻辑的;对于有符号数,逻辑、算数右移都可以。
  • 无论是无符号数还是有符号数,它们之间的加减乘除基本运算都是建立在位级的表示基础上的,最终结果无论溢不溢出,在位模式上都会保持原有的位个数。
  • 两个正整数(无论是无符号数还是有符号数)相除,结果都是正整数(将小数部分舍去)。这与位级的表示和移位有关。当有负整数(有符号数)参与时,移位会导致向下舍入而不是向零舍入。此时,可以在右移之前将小于0的被除数偏置(加上除数再减1),就可以得到正确的结果。
  • 表示浮点数及其运算的标准:IEEE标准754。浮点数有规格化的、非规格化的、无穷大和NaN四种情况。
  • 浮点数运算不可结合和分配,否则中间值可能会±∞或NaN。

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

  • 问题1:整数除法中正整数(无论是无符号数还是有符号数)的右移能产生正确的结果,而负整数(有符号数)的右移却不能产生正确的结果的原因
  • 问题1解决方案:
    • 正整数右移后可能把原来在位级上的非零位移到小数点后,即把某些非零位通过右移(即除以2k)给移走了,而在计算机的整数运算中只可能显示出小数点左边的位模式。但在自然界中,非零数(即上面说的非零位)无论怎么除,结果都不会为零。比如1除以2、1除以22、1除以24、1除以216……,结果都不为零,只是精度能保留到多少而已。也就是说,正整数被除后,它的结果在小数点后面还可能会有非零的数的,但因为在计算机中整数运算的性质,这些非零数被抹去了,只留下小数点左边的整数,结果只能比除法运算的结果小,但符合主机意识中对计算机整数除法的理解,即向零舍入。
    • 负整数的右移和上述相同。右移把结果中小数点右边的非零位给抹去了。这些非零位其实是正的,但因为抹去了,结果就为原来的负数结果减去这些非零位所代表的值,那么,最终结果也就形成了向下舍入而不是向零舍入的局面。
  • 问题2:强转与舍入
  • 问题2解决方案:
    • int转为float,不会溢出,但是可能被舍入,毕竟都只有232个状态,能表达的总信息量是一定的。如224+1和224强转为float后,值为224.000000。舍入的时候会有一种特殊情况,称为向偶数舍入,在非有效位值正好是两个可能值的中间值时,倾向于通过取舍,使得有效位的最后一位为0.
    • double转float, 可能溢出为-∞或+∞.
    • float和double转int,向零舍入。如果出现溢出,则值会变成0b1000 0000,也就是-Min。
  • 问题3:printf("%.2x");解析
  • 问题3解决方案:点号,用于分隔字段宽度和表示精度的数。对于字符串,它指定打印的字符的最大个数;对于e、E或f转换,它指 定打印的小数点后的数字位数;对于g或G转换,它指定打印的有效数字位数;对于整型数,它指定打印的数字位数(必要时可填充位0以达到要求的宽度)。
  • ...

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

  • 问题1:

  • 问题1解决方案:没想到竟然还会出现main后面不加括号这种问题,真的是需要警醒了

  • ...

代码托管

上周考试错题总结

  • 错题1及原因,理解情况
  • 错题2及原因,理解情况
  • ...

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

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

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

    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

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

xxx
xxx

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 10/10 2/2 10/10
第二周 80/90 2/4 15/25
第三周 100/190 3/7 15/40

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

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

  • 计划学习时间:25小时

  • 实际学习时间:15小时

  • 改进情况:

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

参考资料

posted @ 2018-01-17 14:14  弥光  阅读(153)  评论(0编辑  收藏  举报