20145315 《信息安全系统设计基础》第3周学习总结
教材学习内容总结
- 对于逻辑运算来说,如果对第一个参数求值就能确定表达式结果,那么逻辑运算符就不会对第二个数求值。
移位
- 移位数量应小于字长。
- 加减法优先级比移位<<符号要高。
- 对于无符号数,右移必须是逻辑的;对于有符号数,逻辑右移和算数(高位补最高位的值)右移两种都可以。
整数
- long int 取值范围与机器相关 8和4
- 强制类型转换的结果保持位底层不变,数值可能改变。
- 有符号数和无符号数之间的转换
- 补码表示的负数如果转换为无符号数会加上2的W次方,变成更大的正数
- 正数会保持不变
- 无符号数转换为有符号数则是小数不变,大数变负。
C语言中
-如果同时出现有符号数和无符号数,默认转换为无符号数。
数的扩展
- 零扩展
- 符号扩展
- 当short转换为unsigned时,我们要先改变大小,再完成有符号数到无符号数的转变
- (unsigned)(unsigned short) sx
截断数字
- 丢弃高位,对于无符号数相当于x mod 2^k
- 截断一个数字可能会改变其值,这也是值溢出的一种形式。
整数运算
- 整数加法要考虑溢出
- 补码加法
补码
-
最常见的有符号数的计算机表示方式是补码表示形式。
-
同无符号表示一样,在可表示的取值范围内的每个数字都有一个唯一的w 位的补码编码。
-
每个介于-2w-1 和2w-1-1 之间的整数都有一个唯一的长度为w的位向量二进制表示。
浮点数
-
符号(sign) s 决定这个数是负数(s=1)还是正数(s=0),而对于数值0 的符号位解释作为特殊情况处理。
-
尾数(significand) M 是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε。
-
阶码(exponent) E 的作用是对浮点数加权,这个权重是2 的E 次幂(可能是负数)。将浮点数的位表示划分为三个字段,分别对这些值进行编码:
-
一个单独的符号位s 直接编码符号s。
-
k 位的阶码字段exp = ek-1…e1e0 编码阶码E。
-
n 位小数字段frac = fn-1…f1 f0 编码尾数M,但是编码出来的值也依赖于阶码字段的值是否等于0。
浮点运算
- IEEE 标准指定了一个简单的规则,用来确定诸如加法和乘法这样的算术运算的结果。
- 把浮点值x 和y 看成实数,而某个运算⊙定义在实数上,计算将产生Round (x ⊙ y),这是对实际运算的精确结果进行舍入后的结果。
布尔代数
- ~ 对应于逻辑运算NOT,在命题逻辑中用符号﹁表示。
- 当P不是真的时候,我们就说﹁ P 是真的,反之亦然。相应地,当P 等于0 时,~P 等于1,反之亦然。
- 布尔运算& 对应于逻辑运算AND,在命题逻辑中用符号∧表示。当P 和Q 都为真时,我们说P ∧ Q 为真。相应地,只有当p =1 且q =1 时,p & q 才等于1。布尔运算|对应于逻辑运算OR,在命题逻辑中用符号∨表示。
- 当P 或者Q 为真时,我们说P ∨ Q 成立。相应地,当p =1 或者q =1 时,p | q 等于1。
- 布尔运算^ 对应于逻辑运算异或。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 20/200 | 1/2 | 20/20 | |
第二周 | 30/200 | 2/4 | 18/38 | |
第三周 | 50/200 | 1/4 | 22/60 | |
第四周 | 0/1300 | 0/9 | 0/90 |
参考资料
- 《信息安全系统设计基础》教学进程
- ...