2018-2019-1 20165228 《信息安全系统设计基础》第二周学习总结
2018-2019-1 20165228 《信息安全系统设计基础》第二周学习总结
教材学习内容总结
信息=位+上下文
- 无符号编码:基于传统的二进制表示法,表示大于等于零的数字
- 补码编码:表示有符号数证书最常见的方式,可表示或正或负的数字
- 浮点数编码:表示实数的科学计数法的以二为基数的版本
- 溢出:计算机的表示法是用有限数量的位来对一个数字编码,当结果太大以至不能表示时,某些运算就会溢出
信息的存储
- 1个字节为8位,大多数计算机将1个字节作为最小的可寻址的存储器单位。
- 机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识,称为地址。所有地址的集合称为地址空间。
字
- 字长:指明证书和指针数据的标称大小。决定最重要的系统参数就是虚拟地址空间的最大大小。对于一个w位的机器而言,虚拟地址的范围为0~2w-1,程序最多访问2w个字节。
字节排列规则
- 小端法(little endian):最低有效字节排列在最前面
- 大端法 (big endian):最高有效字节排列在最前面
- 网络应用程序的代码编写必须遵守已建立的关于字节顺序的规则,以确保发送方机器将它的内部表示转换成网络的标准,而接收方机器则将网络标准转换为它的内部表示。
字符串
- C语言中的字符串被编码为一个以null(其值为0)字符结尾的字符数组。每个字符都由某个标准编码来表示,最常见的是ASCII字符码。
- 不同的机器类型使用不同的且不兼容的指令和编码方式。即使处理器完全一样,但是运行不同操作系统,也会有不同的编码规则,因此二进制代码是不兼容的。
十进制( Decimal)与R进制的转换
- R个基本符号(0,1,2.R-1)
- R称为基数(base),它代表每个数位上可以使用的不同数字符号个数。R称为第位上的权
- 逢R进一
二进制与八进制/十六进制的转换
- 二进制转化为八进制:从低位开始,三位二进制码表示的十进制数作为一位八进制码,高位不足时补0。
- 二进制转化为十六进制:从低位开始,四位二进制码表示的十进制数作为一位十六进制码,高位不足时补0。
- 八进制/十六进制转化为二进制时,只需要将每一位八进制码/十六进制码还原为三位/四位二进制码即可。
位级运算
- 位向量:固定长度位w、由0和1组成的串
- 位的高低:从左到右,从高到低
- 运算:
&(按位与)
| (按位或)
~(按位取反)
^(按位异或)
逻辑运算
&&(逻辑与)
||(逻辑或)
!(逻辑非)
- 非零参数都表示TRUE,0表示FALSE
移位运算
- 逻辑右移:右移N位,就在高位补N个0
- 算术右移:右移N位,就补N个最高位的值
有符号数与无符号数之间的转换
- 处理同样字长的有符号数与无符号数之间相互转换的一般规则:数值可能会改变,但是位模式不变。
(1)有符号数→无符号数
非负数——保持不变
负数——转换成大正数
(2)无符号数→有符号数
以2^*(w-1)为界限:
小于它——保持不变
大于它——转换为负数值
[0,2(w-1))范围内的数字,无符号和补码表示相同;范围之外的,需要加上或者减去2w
运算时若同时存在有符号数和无符号数,会隐式的将有符号数强制类型转换为无符号数,并且假设这两个数都是非负的。
无符号数运算
-
加法:
-
乘法:
-
除法:向下取整
补码运算
-
加法:
-
乘法:
-
除法:算术右移
浮点数运算
IEEE浮点表示:V=(-1)s x M x 2E(符号 s,尾数 M,阶码 E)
向偶舍入(默认):将数字向上或向下舍入,是的结果的最低有效数字为偶数。能用于二进制小数。
向零舍入:把整数向下舍入,负数向上舍入。
向下舍入:正数和负数都向下舍入。
向上舍入:正数和负数都向上舍入。
代码托管
其他(感悟、思考等,可选)
本周主要是理论知识的学习,进一步了解C中信息的存储、转换和运算规则。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 80/80 | 1/1 | 5/5 | |
第二周 | 0/80 | 1/2 | 4/9 |
-
计划学习时间:9小时
-
实际学习时间:4小时