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


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

    教材学习内容总结

    去年休学前已经进行过本章的学习
    http://www.cnblogs.com/20145237fhn/p/5928238.html
    计算机中三种最重要的数字表示

    无符号数:基于传统二进制表示法,表示大于或等于0的数字
    补码:编码是表示有符号数的最常见方式
    浮点数:表示实数的科学计数法的以2为基数的版本
    溢出:计算机用有限数量的位来对应一个数字编码,因此存在结果太大无法表示的状况,即溢出

    信息存储

    字:
    每个计算机都有一个字长,指明整数和指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长最重要的系统参数就是虚拟地址空间的最大大小。
    对于一个字长为w位的机器而言,虚拟地址的范围为0~2w-1,程序最多访问2w字节。
    使用C99特性:当没有-m32或-m64参数时,一般情况下会生成跟操作系统位数一致的代码;gcc -m32可以在64位机上(比如实验楼的环境)生成32位的代码
    字节顺序:字节顺序是网络编程的基础,是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。
    小端法:低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。
    大端法:高字节数据存放在低地址处,低字节数据存放在高地址处。教材学习中的问题和解决过程

    布尔代数

    逻辑运算

    结果是1或0

    所有逻辑运算都可以用与、或、非表达(最大式、最小式)而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。

    逻辑与(&&) 遇0为0;
    逻辑或(||) 遇1为1;
    逻辑非 遇0为1,遇1为0;
    位运算

    结果是位向量

    按位与(&) 二进制每一位遇0为0;
    按位或(|) 二进制每一位遇1为1;
    按位异或(^) 00=0,01=1,10=1,11=0;
    按位取反(~) 二进制每一位取反。
    掩码运算

    掩码是位运算的重要应用,这里掩码是一个特定位模式,表示从一个字中选择一个位的集合。对特定位可以置一,可以清零。

    逻辑运算与掩码运算

    逻辑运算结果是1或0,位运算结果是位向量

    如果对第一个参数求值就能确定表达式的结果,逻辑运算符就不会对第二个参数求值。

    length=0时会出现存储器错误,这是因为参数length是无符号的,计算0-1将进行无符号运算,等价于模数加法,结果得到UMax。因为任何数都是小于等于UMax的,所以<=比较总是为真,代码将访问数组a的非法元素。
    解决办法:1.将length声明为int类型 2.将for循环测试条件改为i>length

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

    最后发现是没有主函数 书上给出的代码中都无主函数 都需要自己添加一个主函数即可运行
    下面是运行结果:

    代码托管

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

    第二章中涉及的计算很多,我做练习的时候又很多都做的很慢,有些知识不是很能理解透彻,希望老师在课上时能讲几道具体例子方便加深理解。

  • 相关阅读:
    ecshop 整合 kindedotor
    css 一些小笔记
    linux 使用 随记录
    GIPZ 压缩
    js 代码 随记
    map和list循环遍历
    向数据库批量处理事件
    链表和数组的优劣比较
    内存对齐 和 sizeof小结
    C++的默认构造函数与构造函数
  • 原文地址:https://www.cnblogs.com/20145237fhn/p/7671067.html
Copyright © 2020-2023  润新知