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

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

    教材学习内容总结

    一、实验楼实验三总结

    1. gcc编译

      • 使用c99特性 gcc -o c99 -std=c99 c99.c

      • 编译为32位机器码gcc -o m32 -m32 m32.c

    2. 教材导读

      1. 无符号编码基于传统的二进制表示法,表示大于等于零的数字。补码编码(有符号整数)可以为正或者负的数字。浮点数编码表示实数的科学计数法的以2位基数的版本。

      2. 进制转换:以二进制结果作为中介。

      3. 字节顺序:在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的地址。小端法:最低有效字节在前;大端法则反之。需注意,比如0x12345678,78是低位,12是高位。

      4. 执行show-bytes.c。

      5. 位运算与逻辑运算:位运算是指两个或多个数值逐位运算,比如1011|0101=1111;逻辑运算只有真假即true false;非0即为真,0为假。比如1011||0101,1011和0101都是非0,所以等同于1||1,结果为真。

      6. 0扩展:[1,0,1,1]->[0,0,0,1,0,1,1];符号位扩展[1,0,1,1]->[1,1,1,1,0,1,1]。

      7. 整数运算的溢出:如9[1001]+12[1100]=21[10101],取4位的话5[0101]=21 mod 16。整数运算实际上是一种模运算形式。

      8. 浮点数表示对形如V=x * 2^y的有理数进行编码。不太关注运算的精确性,而把实现的速度和简便性看得比数字精确性更重要。

      9. IEEE浮点标准用V = (-1)^s * M * 2^E的形式来表示一个数。其中s(sign)称符号,M(尾数)是二进制小数

      10. 整数与浮点数转换规则:

      int->float        :不会溢出,可能舍入
      int/float->double :保留精确数值
      double->float     :可能溢出成无穷,可能被舍入。
      float/double->int :向0舍入。
      

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

    • 问题1:如何理解IEEE浮点标准?

    • 问题1解决方案:需要做的是先记住几个公式:

      规格化值:
      E=e-Bias
      Bias=2^(k-1)-1
      M=1+f
      e[k-1];f[n-1]
      
      非规格化值:
      E=1-Bias
      Bias=2^(k-1)-1
      M=f
      e[k-1];f[n-1]
      
      特殊值:
      阶码(e)全为1时,小数域(f)全为0时,得到的值表示无穷,小数域(f)不全为0时,结果值被称为“NaN”(Not a Number)。
      

      了解这些,来看书上的示例:

      计算过程已经标注在图上。

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

    • 问题1:习题2.11实现将一个数组元素头尾依次对调。
    • 问题1解决方法:
      #include <stdio.h>
    void inplace_swap(int *x,int *y){
    		*y=*x^*y;
    		*x=*x^*y;
    		*y=*x^*y;
    }
    
    void reverse_array(int a[],int cnt){
    		int first,last;
    		for(first=0,last=cnt-1;first<last;first++,last--)
    				inplace_swap(&a[first],&a[last]);
    }
    
    void main(){
    
    		int num[5]={1,2,3,4,5};
            int i=0;
    		reverse_array(num,5);
    		for(i=0;i<5;i++){
    				printf("%d ",num[i]);
    		}
    }
    

    运行结果截图:

    代码托管

    结对及互评

    本周结对学习情况

    • 20155313

    • 结对学习内容
      IEEE浮点标准。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 195/195 1/1 10/10
    第三周 314/706 1/2 15/25
    • 计划学习时间:12小时

    • 实际学习时间:15小时

    参考资料

  • 相关阅读:
    [JSOI2007][BZOJ1031] 字符加密Cipher|后缀数组
    leetcode Flatten Binary Tree to Linked List
    leetcode Pascal's Triangle
    leetcode Triangle
    leetcode Valid Palindrome
    leetcode Word Ladder
    leetcode Longest Consecutive Sequence
    leetcode Sum Root to Leaf Numbers
    leetcode Clone Graph
    leetcode Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/zhuohua/p/7670371.html
Copyright © 2011-2022 走看看