2019-2020-1 20175209 《信息安全系统设计基础》第二周学习总结

2019-2020-1 20175209 《信息安全系统设计基础》第二周学习总结

教材知识点总结

  • 无符号数、补码、浮点数是我们研究的最重要的三种数字表示。其实注意的是,补码编码是表示有符号整数最常见的方法,在计算机中负数都是用补码的形式来存储的;浮点数以二为基数。
  • 由于表示的精度有限,浮点运算是不可结合的
  • C语言允许在各种不同数据类型之间做强制类型转换。但要注意,将负数转换为无符号数可能会得到0,且强制类型转换的结果保持位值不变,只是改变了解释这些位的方式。
  • 零扩展和符号扩展:零扩展应用于无符号整数,符号扩展应用于有符号整数。
  • 截断数字:与扩展相反,截断是用来减少一个数字的位数。截断时,抛弃高位。对于一个x位的数字,要截断为y位,就抛弃了高x-y位。也就是相当于xmod2的y次方。
  • 区分位运算和逻辑运算的区别与运算方法。
  • 逻辑右移:>>>,算数右移:>>
  • 无符号数和补码的乘法一样,除法都是进行移位。无符号数的除法移位后补0,补码的除法移位后补1。

教材学习中的问题和解决办法

  • 问题1:第48页的练习题,在看反汇编列表的时候,不理解16进制补码后的$,%rsp,%rax,%rid什么意思
  • 解决:$表示偏移地址,rsp,rax,rid是指针寄存器
  • 问题2:浮点数在计算机中存储方式是怎样的?
  • 解决:
现代计算机中,浮点数一般采用IEEE制定的国际标准,形式如下:
符号位s 阶码e 尾数 总尾数
短实数(单精度数) 1 8 23 32
长实数(双精度数) 1 11 52 64
临时实数 1 15 64 80
  • 问题3:教材第31页中出现了一个之前没有接触过的数据类型“size_t”,书中的解释是“它表示数据结构大小的首选数据类型”,但我还是不理解这里的“数据结构大小”是什么意思。
  • 解决:根据对代码的分析,show_bytes函数用于打印每个字节,size_t 类型变量i为循环控制变量,最大值为某类型变量所占字节数,所以我推测size_t应该是个类似int类型的变量,那么它与整型的关系是什么呢?通过搜索资料,我发现“size_t的取值range是目标平台下最大可能的数组尺寸”所以,它能够“跨平台”。
    不同平台的size_t会用不同的类型实现,使用size_t而非int或unsigned可以写出扩展行更好的代码。”

上周错题总结

用gcc hello.c -o hello 编译hello.c,hello中不存在()节

A..debug
B..text
C..line
D..rodata

正确答案: A C

13 .为了构造可执行文件,连接器的主要任务有()

A.生成静态库
B.符号解析
C.生成共库
D.重定位

正确答案: B D

posted @ 2019-09-29 18:50  5209wzh  阅读(128)  评论(0编辑  收藏  举报