2017-2018-1 20155234第三周《信息安全系统设计基础》学习总结
20155234第一周《信息安全系统设计基础》学习总结
教材学习内容总结
信息存储与处理
- 无符号数:基于传统二进制表示法,表示大于或者等于零的数字。
- 有符号数:以二进制补码表示。
- 两者之间的转换
原则:底层的位保持不变
(1)有符号数→无符号数
非负数——保持不变
负数——转换成大正数
(2)无符号数→有符号数
以2^*(w-1)为界限:
小于它——保持不变
大于它——转换为负数值 - 浮点数:表示实数的科学计数法的以二为基数
- 在64位机上编译32位的代码
gcc -m32(32不可以编译64) - 逻辑运算(结果是1或0)和位运算(结果是位向量),所有逻辑运算都可以用与、或、非表达(最大式、最小式),而与或非可以用“与非”或“或非”表达,所以,只要一个与非门,就可以完成所有的逻辑运算。
大量计算机的安全漏洞都是由于计算机算术运算的微妙细节引发的
逻辑与(&&):遇0为0;
逻辑或(||):遇1为1;
逻辑非 (!):遇0为1,遇1为0; - 位运算的重要应用,表示从一个字中选择一个位的集合。对特定位可以置一,可以清零
按位与(&):二进制每一位遇0为0;
按位或(|):二进制每一位遇1为1;
按位异或():00=0,01=1,10=1,1^1=0;
按位取反(~):二进制每一位取反。 - 通过掩码,可以屏蔽一些信号,掩码表示是设置为有效信号的集合。
- 移位运算
逻辑右移:在左端补k个0,多用于无符号数移位运算
算术右移:在左端补k个最高有效位的值,多用于有符号数移位运算。
移位运算优先级小于算术运算。
Java中用>>表示算术右移,用>>>表示逻辑右移。
整型数据类型
- char:字符型数据,占用一个字节
- unsigned char:无符号字符型数据,占用一个字节
- short:短整形数据,占用两个字节
- unsigned short:无符号短整型数据,占用两个字节
- int:整形数据,占用两个字节
- unsigned int:无符号整型数据,占用两个字节
- long:长整型数据,占用四个字节
- unsigned long:无符号长整型数据,占用四个字节
- char:字符型数据,占用一个字节
- unsigned char:无符号字符型数据,占用一个字节
- short:短整形数据,占用两个字节
- unsigned short:无符号短整型数据,占用两个字节
- int:整形数据,占用两个字节
- unsigned int:无符号整型数据,占用两个字节
- long:长整型数据,占用四个字节
- unsigned long:无符号长整型数据,占用四个字节
- C语言中有符号数转换为无符号数时,不改变位表示,也就是说,不同的数据类型C语言读取的方式不一样。
- 如何让负数变成整数:逐位取反再加一,先非运算,再加一。
- 扩展为32位时用1扩展负数,用零扩展整数。
- 溢出就是内存中存储运算结果的空间不够导致,所以为了避免溢出,应该事先估计运算结果的大小,找到合适的存储空间。
浮点数
- IEEE:V = (-1)s * M * 2E
IEEE浮点格式定义了四种舍入方法:
向偶舍入(默认):将数字向上或向下舍入,是的结果的最低有效数字为偶数。能用于二进制小数。
向零舍入:把整数向下舍入,负数向上舍入。
向下舍入:正数和负数都向下舍入。
向上舍入:正数和负数都向上舍入。 - s-符号 0为正,1为负
- M-小数
- E-阶数
- float中:s、exp和frac字段分别为1位、k = 8 位和n = 23位,得到一个32位的表示
- double中:s、exp和frac字段分别为1位、k = 11 位和n = 52位,得到一个64位的表示
- 整数与小单精度数的转换:符号位+阶数加127的二进制数+去掉开头1位的数+十个0。
- 浮点加法
浮点加法是可交换的
浮点加法不具结合性
大多数值的浮点加法都有逆元,除了无穷和NaN。
浮点加法满足单调性 - 浮点乘法
浮点乘法是可交换的
浮点乘法不具有结核性
浮点乘法的单位元为1.0
浮点乘法在加法上不具备分配性
在一定条件下满足单调性
错题
无
代码托管
结对搭档
上周点评博客
无
感想
这一章的内容是一些基础的知识内容需要我们很好的去记忆理解并且熟练应用
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | |
---|---|---|
目标 | 5000行 | 30篇 |
第一周 | 6/6 | 1/1 |
第三周 | 150/156 | 2/3 |