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小时
- 改进情况:学习时间有所增长