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

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

教材学习内容总结

  • 64位机器和32位机器

    在Linux环境下运行程序prog.c时,用 linux>gcc -m32 prog.c就可在32或64位机器上正确运行,用
    linux>gcc -m64 prog.c就只能在64位机器上运行。我们称“32位机器”和“64位机器”区别在于程序是如何编译的,而不是机器的类型。

  • 二进制代码和字节

    完全一样的进程,在不同的操作系统上会有不同的编码规则,因此二进制代码是不兼容的。从机器的角度来看,程序仅仅是字节序列。

  • 移位操作

    注意C语言中移动k位的时候,这里k很大,结果会怎样?

    对于一个由w位组成的数据类型,如果要移动k>=w位会得到什么结果?位移指令只考虑位移量的低log2W位,因此实际上位移量就是通过计算k mod w得到的,所以对于

    int lval = 0xFEDCAB98<<32
    

    就是移动0位。

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

  • 问题1:逻辑运算符和位级运算区别

  • 区别:<1>逻辑运算认为所有的非零参数都表示为TRUE,而参数0都表示为FALSE所以返回0或1。例如“!0x41”应该这么看:0x41为非零,然后再进行NOT运算,求反,结果为0。而位级运算则是按位与、或、非。例如逻辑运算Ox69&&Ox55结果为0x01(1或为TRUE),而位级运算为Ox41。
    <2>逻辑运算符如果第一个参数求值就能确定表达式的结果,就不用对第二个参数求值。

  • 问题2:P34页对show_bytes调用的结果?

  • 显示没有定义“byte_pointer”,应该在之前的程序中定义一下,自己太粗心了。

代码调试过程中的问题

在进行练习2.15时,编写完程序,出现了“段错误”这个提示

然后我上网查了一下这个问题
段错误是一旦一个程序发生了越界访问,cpu 就会产生相应的保护,于是 segmentation fault 就出现了,通过上面的解释,段错误应该就是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。

http://www.linuxidc.com/Linux/2015-09/122966.htm
这个问题我还没有解决。

上周考试错题总结

  • 计算机中总线传送定长的数据,这个定长是( ),是一个基本的系统参数

A .字节 B .字 C .双字 D .四字

  • 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,总线通常被设计成传送定长的字节块,也就是字,字中的字节数也就是字长。

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

第二章的学习主要是关于C语言的基础复习,温习了一下 关于移位、补码等问题的学习,感觉还是还是有很多的收获。

学习进度条

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

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

  • 计划学习时间:25小时
  • 实际学习时间:30小时
  • 改进情况:学习时间有所增长
原文地址:https://www.cnblogs.com/JIUSHA/p/7673725.html