2017-2018-1 20155209 《信息安全系统设计基础》第三周学习总结
教材学习内容总结
- 在计算机中,可以区分正负类型的数,成为“有符号数”(signed);无正负类型的数(只有整数类型),成为“无符号数”(unsigned)。简明的说,无符号数就是其所有的位数都用来表示数值的大小,有符号数除最高位来表示数值的正负外(0表示正数;1表示负数),其余各位用来表示数值的大小。举个例子说明一下:十机制数 正数255 二进制表达形式:1111 1111 十机制数 负数-1 二进制表达形式:1111 1111
- 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。
- C语言中提供了三种逻辑运算符:&&(与运算), ||(或运算),!(非运算)与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。非运算符(!)为单目运算符,具有右结合性。
- 将源码与掩码经过按位运算或逻辑运算得出新的操作数。其中要用到按位运算如OR运算和AND运算。用于如将ASCII码中大写字母改作小写字母。
如A的ASCII码值为65=(01000001)2,a的ASCII码值为97=(01100001)2,要想把大写字母A转化为小写字母只需要将A的ASCII码与(00100000)2进行或运算就可以得到小写字母a。
教材学习中的问题和解决过程
- 各种类型的有符号数与无符号数之间的转换都有哪些常见的种类,分别都是怎么转换的。
- 在C语言中,数字常量如果没有后缀‘U'或'u',则默认为是有符号数。
- 同类型整数之间的类型转换:
这样的类型转换是指不同字长的无符号数或有符号数之间的类型转换,如由short转为int,或是有unsigned short转换为unsigned。
无符号数由短变长使用零扩展,使用0来填充多出来的高字节。 - 当发生有符号数和无符号数之间的强制类型转换时,如果他们的长度是相同(比如int和unsigned一般都是4个字节,short和unsigned short都是两个字节),那么在位一级的表示上并没有变化,即如果都转化为二进制的形式来看,都是一样的。
- 参考资料
- 位运算与逻辑运算的不同,位运算符与逻辑运算符的区别。
- 位运算:先将每个数转换成二进制,然后进行,位或(|)表示相对应的每位至少有一个为1,则结果为1,只有两个都为0,结果才为0.位与(&)表示相对应的两位必须都为1,结果才为1,否则为0。位异或(^)比较特殊,它比较的是如果两个不同则值为1(如:(1、0)(0、1)),相同(如:(1、1)(0、0))则为0。
- 逻辑运算:先将逻辑运算符(&&||)两边的表达式都换算成逻辑值(true、false),逻辑或(||)表示如果两个值至少有一个为ture,则结果为true,只有两个都为false,结果才为false。逻辑与(&&)表示两个都为true,结果才为true,否则为false。
- &:按位操作符(“与”),将两个表达式的值按二进制位展开,对应的位(bit)按值进行”与”运算,结果保留在该位上。
- &&:逻辑操作符(“与”),计算两个表达式同时成立的“真值”。&&具有短路的功能(即一旦能够明确无误地确定整个表达式的值,就不再计算表达式余下部分了),即如果第一个表达式的值是false,,后面的表达式不会执行。
- 参考资料
代码调试中的问题和解决过程
- 本章代码较少,按照书上编写,没有进行更复杂的实践。
代码托管
-
本周结对学习情况
其他(感悟、思考等,可选)
- 本周由于是十一回来的第一周,之前落下的学习进度都大多补齐,下周开始正式进入学习正轨。
- 系统内部的信息储存和使用有很多要学习的地方,以后要多加实践。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 20/20 | 1/1 | 20/20小时 | |
第二周 | 50/70 | 1/2 | 5/25小时 | |
第三周 | 100/170 | 1/3 | 10/35小时 | |
第四周 | 68/238 | 1/4 | 20/55小时 |
-
计划学习时间:20小时
-
实际学习时间:10小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)