zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155217 《信息安全系统设计基础》第三周学习总结

    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/85 1/1 6/6
    第二周 85/85 1/1 6/6
    第三周 91/176 3/4 12/18

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

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

    • 计划学习时间:16小时

    • 实际学习时间:12小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    PHP中利用jQuery操作json格式数据,实现$_POST的数据传输和接收
    如何快速掌握一门技术【婴儿最强学习回头看一看】
    显示桌面.scf
    注册表数据库
    win10home_fixgpedit.msc
    Eclipse 中 jetty 调试模式(debug)正常启动无法访问;非调试模式正常
    svn中的与资源库同步操作 讲解
    windows下二进制mysql的卸载以及安装教程
    mysql服务正在启动或停止中请稍后片刻再试一次,服务强制杀死的方法
    Eclipse中git检出、更新、提交、合并分支、以及解决冲突
  • 原文地址:https://www.cnblogs.com/yangdi0420/p/7614799.html
Copyright © 2011-2022 走看看