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

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

教材学习内容总结

第二章 信息的表示和处理

  • 2.1 信息存储
    • 虚拟存储器:计算机级程序将存储器视为一个非常大的字节数组
    • 地址:存储器每个字节的唯一数字标识
    • 虚拟地址空间:所有可能地址集合
    • 程序对象:程序数据、指令和控制信息
    • 2.1.1 十六进制表示法
      • 0X0x开头的数字常量常被认定为十六进制的值
      • 十进制->十六进制:反复地用16除x,余数从最低位开始计
    • 2.1.2 字
      • 字长:指明整数和整数和指针数据的标称大小
      • 字长决定虚拟空间的虚拟地址空间的最大大小,字长为w的机器,虚拟地址范围为0~2^w-1
    • 2.1.3 数据大小
    • 2.1.4 寻址和字节顺序
      • 小端法:最低有效字节在最前面的的方式
      • 大端法:最高有效字节在最前面的方式
      • 双端法:可配置
      • 强制类型转换:允许一种数据类型引用一个对象,而这种数据类型与创建这个对象时定义的数据类型不同
    • 2.1.5 表示字符串
      • 文本数据比二进制数据具有更强的平台独立性
    • 2.1.6 表示代码
      • 二进制代码是不兼容的
    • 2.1.7 布尔代数简介
      • 布尔代数:将逻辑值TRUE和FALSE编码为二进制0和1,设计出的一种研究逻辑推理基本原则的代数
      • ~对应于NOT,&对应于AND,|对应于OR,^对应于异或
      • 有限集合可以用位向量来编码
    • 2.1.8 C语言中的位级运算
      • C语言支持按位布尔运算
      • 确定一个位级表达式的结果最好的方法,就是将十六进制的参数扩展成二进制表示并执行二进制运算,然后再转换成十六进制
      • 掩码:表示从一个字中选出的位的集合
    • 2.1.9 C语言中的逻辑运算
      • 逻辑运算符:||&&!分别对应命题中的OR、AND、NOT,与位级运算不同
      • 移位:<<向左移动右边补零,>>无符号数右数是逻辑右移,有符号数算数或者逻辑右移都可以
  • 2.2 整数表示
    • 2.2.1 整型数据类型
      • int可以用2字节实现,long4字节,long long至少8字节
    • 2.2.2 无符号数的编码
      • 无符号的二进制数,每个介于0~2^w-1之间的数都有唯一一个w位的值编码
    • 2.2.3 补码编码
      • 将字的最高有效位解释为负权
      • 补码的范围不对称:|TMin|=|TMax|+1
      • UMax(w)=2TMax(w)+1
    • 2.2.4 有符号数和无符号数之间的转换
      • 处理同样字长有符号数和无符号数之间的互相转换:数据可能会变,但是位模式不变
    • 2.2.5 C语言中的有符号数与无符号数
      • 要创建一个无符号常量,必须加上后缀Uu
      • 显式强制转换,隐式一种类型的表达式被赋值给另外一种类型的变量
      • %d有符号十进制 %u无符号十进制 %x十六进制
      • 一个运算数是有符号数一个运算数是无符号数,C语言隐式的将有符号参数强制类型转换成无符号数,并设这两个数都是非负的
    • 2.2.6 扩展一个数字的位表示
      • 零扩展:无符号数
      • 符号扩展:有符号数
      • short转换成usigned时,先转换大小,转换成int,再变成无符号数
    • 2.2.7 截断数字
      • 将一个w位的数截断为一个k位数字时,我们会丢弃高w-k位,等于计算x mod2^k
    • 2.2.8 关于有符号数和无符号数的建议
      • Java不支持无符号数,正常右移>>执行算数右移,特殊运算符>>>执行逻辑右移
      • 想把数仅看作是位的集合,没有任何数字意义 ,无符号数是有意义的
  • 2.3 整数
    • 2.3.1 无符号数加法
      • 无符号计算可以看作一种模形式的运算
      • 无符号加法等价于计算和模2^w
      • 溢出:完整的整数结果不能放到数据类型的字长限制中去
      • 当且仅当s<w,发生了溢出,溢出则s=x+y-2^w
      • 阿贝尔群:模数加法形成的一种数学结构
    • 2.3.2 补码加法
      • 负溢出,加2^w
      • 正溢出,减2^w
    • 2.3.3 补码的非
      • 除-2^(w-1)的补码为本身之外,其他补码都为-x
    • 2.3.4 无符号乘法
      • 等价于计算乘积模2^w
    • 2.3.5 补码乘法
      • 和无符号乘法运算的位级相同
    • 2.3.6 乘以常数
      • x<k相当于x*2^k mod2^w
      • x<<k相当于x*2^K
    • 2.3.7 除以2的幂
      • x>k对于非负数与逻辑右移一样
      • 对于无符号变量x>>k相当于x/2^k
    • 2.3.8 关于整数运算的最后思考
  • 2.4 浮点数
    • 对形如V=x*2^y的有理数进行编码
    • IEEE标准754
    • 2.4.1 二进制小数
      • 只是近似的表示,并不精确
    • 2.4.2 IEEE浮点表示
      • IEEE浮点标准用V=(-1)s*M*2E的形式表示一个数
      • 符号:s决定这个数是负数(s=1)还是正数(s=0),对数值0的符号位解释作为特殊情况处理
      • 尾数:M是一个二进制小数,范围是12-e或01-e
      • 阶码:E的作用是对浮点数加权,这个权重是2的E次幂(可能是负数)
      • 单精度浮点格式,s、exp、frac字段分别为1位、k=8、n=23,32位表示
      • 双精度浮点格式,s、exp、frac字段分别为1位、k=11、n=52,64位表示
      • 根据exp的值,被编码的值可以分成三种不同情况
      • 规格化的值:exp的位模式既不全为0,也不全为1(单精度255,双精度2047)
      • 非规格化的值:阶码域为全0
      • 特殊值:阶码全为1
    • 2.4.3 数字示例
    • 2.4.4 舍入
      • 向偶数舍入方式:将数字向上或者向下舍入,使得结果的最低有效数字是偶数
      • 向零舍入方式:把正数向下舍入,把负数向上舍入
      • 向下舍入方式:把正数负数都向下舍入
      • 向上舍入方式:把正数负数都向上舍入
    • 2.4.5 浮点运算
    • 2.4.6 C语言中的浮点数
      • int转换成float,数字不被溢出,但是可能被舍入
      • int/float转换成double,能保留精确数值
      • double转换成float,值可能被溢出,还可能被舍入
      • float/double转换成int,值将会向零舍入

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

  • 问题1:我在33页看了这一段文字
尽管浮点型和整型数据都是对数值12345编码,但是他们有截然不同的字节模式:整型为0x00003039,而浮点数为0x4640E400.
  • 问题1解决方案
    不是很懂为什么编码12345的浮点数是0x4640E400。 我查了百度,说浮点数使用IEEE754标准,然后我去百度查找IEEE754标准的格式,并使用蓝墨云班课中的IEEE计算器问题就解决了。

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

  • 问题1:教材31页代码没有不能运行
  • 问题1解决方案:编译之后才发现是由于没有主函数导致的,我自己编写了一个简单的主函数运行

代码托管

上周考试错题总结

打不开错题

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [20155223](http://www.cnblogs.com/battlefieldheros/p/7629031.html)
- 结对照片
- 结对学习内容
   教材第二章和实验楼实验三内容

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

这周是十一放假回来的第一周,放假期间我没有针对课程之前学过的知识进行复习,导致这周在学习过程中有点吃力,因为之前的知识有些生疏了,我想既然我们的教学资源有很多都放在网上,无论是否放假都应该及时复习。

学习进度条

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

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

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

  • 计划学习时间:10小时

  • 实际学习时间:7小时

  • 改进情况:

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

参考资料

原文地址:https://www.cnblogs.com/lnaswxc/p/7669969.html