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

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

    教材学习内容总结(信息的表示和处理)

    信息存储

    • 虚拟存储器:计算机级程序将存储器视为一个非常大的字节数组
    • 地址:存储器每个字节的唯一数字标识
    • 程序对象:程序数据、指令和控制信息
    • 十六进制表示法
      • 以0X或0x开头的数字常量常被认定为十六进制的值
      • 十进制->十六进制:反复地用16除x,余数从最低位开始计
    • 字:
      • 每个计算机都有一个字长,指明整数和指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长最重要的系统参数就是虚拟地址空间的最大大小。
      • 对于一个字长为w位的机器而言,虚拟地址的范围为0~2w-1,程序最多访问2w字节。
    • 寻址和字节顺序
      • 小端法:最低有效字节在最前面的的方式
      • 大端法:最高有效字节在最前面的方式
    • 布尔代数:
      - 逻辑运算:
      - 所有逻辑运算都可以用与、或、非表达(最大式、最小式)而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算
      - 逻辑运算符:逻辑与(&&);逻辑或(||);逻辑非(!)
      - 位运算:结果是位向量;按位与(&) 二进制每一位遇0为0;按位或(|) 二进制每一位遇1为1;按位异或(^) 00=0,01=1,10=1,11=0;按位取反(~) 二进制每一位取反
      - 掩码运算:掩码是位运算的重要应用,这里掩码是一个特定位模式,表示从一个字中选择一个位的集合。对特定位可以置一,可以清零。

    整数表示

    • 无符号数编码:对于长度为w的位向量,都有一个唯一的值与之对应;反过来,在0~2^w-1之间的每一个整数都有一个唯一的长度为w的位向量二进制表示与之对应。
    • 补码编码:补码形式是最常见的有符号数的计算机表示方式;将字的最高有效位解释为负权 B2T(W)函数为:B2T(x) = -x(w-1)2(w-1)+∑xi2i(求和从i=0到i=w-2)
    • 有符号数和无符号数之间的转换:
      - 处理同样字长的有符号数和无符号数之间相互转换的一般规则:数值可能会改变,但是位模式不变。
      - c语言允许无符号数和有符号数之间的转换,转换的原则是底层的位表示不变。
    • 扩展一个数字的位表示:
      - 零扩展:无符号数
      - 符号扩展:有符号数
      - short转换成usigned时,先转换大小,转换成int,再变成无符号数
    • 截断数字:将一个w位的数截断为一个k位数字时,我们会丢弃高w-k位,等于计算x mod2^k

    整数运算

    • 无符号数加法:
      - 无符号计算可以看作一种模形式的运算
      - 无符号加法等价于计算和模2^w
      - 溢出:完整的整数结果不能放到数据类型的字长限制中去
      - 当且仅当s<w,发生了溢出,溢出则s=x+y-2^w
    • 补码加法:负溢出,加2w;正溢出,减2w。
    • 补码的非:除-2^(w-1)的补码为本身之外,其他补码都为-x
    • 补码乘法:和无符号乘法运算的位级相同
    • 乘以常数:x<k相当于x*2^k mod2w;对于无符号变量x>>k相当于x/2k

    浮点数

    • 浮点表示对形如 V=x*2^y 的有理数进行编码;适用于:非常大的数字(|V|>>0)、非常接近于0的数字(|V|<<1)、实数运算的近似值;IEEE浮点标准:IEEE标准754。
    • 二进制小数:二进制点左边第i位,权为2i;右边第i位,权为(1/2)i;增加二进制表示的长度可以提高表示的精度。
    • IEEE浮点格式:
      - 表示形式:V=(-1)^s * M * 2^E
      - 符号:s决定这个数是正还是负。0的符号位特殊情况处理。
      - 尾数:M是一个二进制小数,范围为12-ε或者01-ε,ε=(1/2)^n。
      - 阶码:E对浮点数加权,权重是2的E次幂(可能为负数)。
    • C语言中的浮点数:
      - int转换成float,数字不被溢出,但是可能被舍入
      - int/float转换成double,能保留精确数值
      - double转换成float,值可能被溢出,还可能被舍入
      - float/double转换成int,值将会向零舍入

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

    在练习十进制与十六进制的转换时,将Perl语言脚本直接写进c文件中,发现根本编译不出。如下截图:

    在看了卢肖明同学的关于Perl语言脚本运行方法后,明白了Perl语言是另外一种语言,根据小明同学提供的方法最终实现了十进制与十六进制的转换。

    本周代码托管截图

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 4000行 30篇 400小时
    第一周 0/0 2/3 10/20 掌握了几个命令
    第二周 0/0 1/4 8/28 熟练了vim编辑器的操作
    第三周 40/40 1/5 12/40 开始敲代码了

    参考资料

  • 相关阅读:
    布局重用 include merge ViewStub
    AS 常用插件 MD
    AS 2.0新功能 Instant Run
    AS .ignore插件 忽略文件
    AS Gradle构建工具与Android plugin插件【大全】
    如何开通www国际域名个人网站
    倒计时实现方案总结 Timer Handler
    AS 进行单元测试
    RxJava 设计理念 观察者模式 Observable lambdas MD
    retrofit okhttp RxJava bk Gson Lambda 综合示例【配置】
  • 原文地址:https://www.cnblogs.com/huangyaqi/p/5928141.html
Copyright © 2011-2022 走看看