zoukankan      html  css  js  c++  java
  • 20145337 《信息安全系统设计基础》第3周学习总结

    20145337 《信息安全系统设计基础》第3周学习总结

    教材学习内容总结

    第一节 信息存储

    一、十六进制表示法

    • 以0x或0X开头的数字常量为十六进制
    • 二进制-十六进制相互转换
      ※一种特殊情况
    • 要表示的数字常量x=2的n次方时,n=i+4j,且0≤i≤3时,开头的十六进制数字为1(i=0)、2(i=1)、4(i=2)、8(i=3),后面跟随着j个十六进制的0。这里的j是代表着每四位二进制位对应的十六进制位,而i的范围是因为十六进制中每一位的范围是0-F,最多能容纳到8。

    二、寻址和字节顺序

    小端法和大端法

    • 小端法:最低有效字节在前面——“高对高,低对低”
    • 大端法:最高有效字节在前面
    • 以0x01234567为例:
    • 最高有效位在最前,所以为01 23 45 67
    • 小端法:
    • 最低有效位在最前,所以为67 45 23 01

    三、位运算

    • 常用运算符号:
    1. 与: &
    2. 或: |
    3. 非: ~
    4. 异或:^
    5. 位运算:位向量按位进行逻辑运算,结果仍是位向量(区别于逻辑运算)

    四、逻辑运算

    逻辑运算符

    • 与:&&
    • 或:||
    • 非:!
    • 逻辑运算的计算结果:
    • 所有非零参数都代表TRUE,0参数代表FALSE
    • 逻辑运算和位运算的区别
    1. 只有当参数被限制为0或1时,逻辑运算才与按位运算有相同的行为。
    2. 如果对第一个参数求值就能确定表达式的结果,逻辑运算符就不会对后面的参数求值。

    五、移位运算

    • 右移分为逻辑右移和算术右移
    • 逻辑右移:
    • 在左端补k个0,多用于无符号数移位运算
    • 算术右移:
    • 在左端补k个最高有效位的值,多用于有符号数移位运算。

    第二节 整数表示

    一、补码编码

    • 补码的最高位是表示符号位,解释为负权,“权重”为-2的(w-1)次方,即无符号表示中的权重的负数。符号位为1,表示值为负,符号位为0,表示值为非负
    • 补码的范围:-2(w-1)~2(w-1)-1,即|TMin|=|TMax|+1
      无符号数编码(U)和补码(T):UMax = 2 TMax + 1

    二、有符号数和无符号数的转换

    • 有符号数换为无符号数
    • 非负数——保持不变
      • 负数——加上2^w,转换成大正数
    • 无符号数换为有符号数
      以2的w-1次方为界限:
      小于它——保持不变
      大于它——减去2^w,转换为负数值

    三、扩展

    • 零扩展
      多用于无符号数转换为一个更大的数据类型。
      只需在开头加上0即可。
    • 符号扩展多用于补码数字转换
    • 最高有效位是什么,就添加什么。

    四、截断

    • 将一个w位的数截断为k位数字时,就会丢弃高w-k位。
    • 对于无符号数来说,就相当于 mod 2的k次幂
    • 对于有符号数来说,先按照无符号数截断,然后再转化为有符号数

    第三节 整数运算

    • 整数运算即mod 2^w。
    1. 补码的非运算
      对于范围在[-2(w-1),2(w-1))中的x,补码的非运算有如下两种情况:
    • x=-2(w-1)时,为-2(w-1);
    • x>-2^(w-1)时,为-x;
    1. 求位级补码非
    • 对每一位求补,再对结果+1
    • 设k为最右面的1的位置,将k左边的所有位取反。
    • 乘以常数
    1. 常数为2的k次幂的时候
      直接左移k位即可。
    2. 常数不是2的整数次幂的时候
      将常数C表示为2的几个整数次幂的和,结合移位运算和加法运算。
    • 除以2的k次幂
    1. 无符号数——逻辑右移
      无符号数除以2的k次幂,就等同于对其逻辑右移k位。
    2. 补码——算术右移
    • x≥0时,除以2的k次幂等价于将x算术右移k位
    • x<0时,先将x加上(2^k)-1,再算术右移k位

    第四节 浮点数

    一、二进制小数

    • 小数的二进制表示法只能表示那些能够被写成x X (2^y)的数,其他的值只能近似的表示。
    • 权重
    • 以小数点为界:
      左边第i位,权重为2的i次幂
      右边第i位,权重为1/2的i次幂

    二、IEEE浮点表示

    • IEEE浮点标准:
    • 用V=(-1)^s X 2^E X M 来表示一个数:
    • 符号:s决定这个数是正还是负。0的符号位特殊情况处理。
    • 阶码:E对浮点数加权,权重是2的E次幂(可能为负数)
    • 尾数:M是一个二进制小数,范围为12-ε或者01-ε(ε=1/2的n次幂)
    • 编码规则:
    • 单独符号位s编码符号s,占1位
    • k位的阶码字段exp编码阶码E
    • n位小数字段frac编码尾数M(同时需要依赖阶码字段的值是否为0)
    • 两种精度
    • 单精度(float),k=8位,n=23位,一共32位;
    • 双精度(double),k=11位,n=52位,一共64位。
    • 三种被编码情况:
      规格化的、
      非规格化的、
      特殊值

    三、舍入

    1. 向偶舍入
      即:将数字向上或向下舍入,是的结果的最低有效数字为偶数。
    • 能用于二进制小数。
    1. 向零舍入
      把整数向下舍入,负数向上舍入。
    2. 向下舍入
      正数和负数都向下舍入。
    3. 向上舍入
      正数和负数都向上舍入。
    • 向偶舍入可以得到最接近的匹配,其余三种可用于计算上界和下界

    四、浮点运算

    1. 浮点加法:
      浮点加法是可交换的、
      浮点加法不具结合性
    • 大多数值的浮点加法都有逆元,除了无穷和NaN。
    • 浮点加法满足单调性
    1. 浮点乘法:
      浮点乘法是可交换的、
      浮点乘法不具有结核性、
      浮点乘法的单位元为1.0、
      浮点乘法在加法上不具备分配性、
      在一定条件下满足单调性、

    代码托管截图

    git.shiyanlou.com/20145337

    感悟

    • 在这一章我学习了用各类方法来表示基本的数据类型,再操作这些数据。在学习中明白了编译器如何将C程序翻译成这样的指令。在接下来学习的几种实现处理的方法,帮助我们更好的了解硬件资源是如何被用来执行的。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60

    参考资料

  • 相关阅读:
    MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart
    (转)Spring MVC
    ios>android>javaee
    css标准导航代码
    图片对齐问题
    display:inline、block、inline-block的区别
    css怎么引用某张图片?链接要怎么写
    论怎么写好一篇实验报告
    路由器及其配置方法
    (转)MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet
  • 原文地址:https://www.cnblogs.com/5337my/p/5926522.html
Copyright © 2011-2022 走看看