2018-2019-1 20165237 《信息安全系统设计基础》第二周学习总结
知识要点
三种数字表示
- 无符号数:基于传统的二进制表示法,表示大于或等于零的数字
- 补码:表示有符号数,可为正可为负的数字
- 浮点数:表示实数的科学计数法的以二为基数的版本
- 整数运算和浮点数运算有不同的数学属性,因为它们处理数字表示有限性的方式不同,整数的表示虽然只能编码一个相对较小的数值范围,但这种表示精确;浮点数编码数值范围相对较大,但是近似的。
信息存储
- 字节:
- 计算机最小的可寻址的存储器单位——字节
- 一个字节的值域:00H-FFH
- 字:
- 每个计算机都有一个字长,指明整数和指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长最重要的系统参数就是虚拟地址空间的最大大小。
- 对于一个字长为w位的机器而言,虚拟地址的范围为
0~2^w-1
,程序最多访问2^w
字节。 - w=32或64:也就是我们通常所说的电脑是32位还是64位。也可以理解为CPU一次处理数据的位数。
- 寻址和字节顺序:
- 小端法:最低有效字节在前面——“高对高,低对低”。
- 大端法:最高有效字节在前面。
- 表示字符串和表示代码
- 字符串:c语言中字符串被编码成为一个以null(值为0)字符结尾的字符数组。多使用ASCII字符码。在使用ASCII字符码的任何系统上都能得到相同的结果,与字节顺序和字大小规则无关,所以文本数据比二进制数据具有更强的平台独立性。
- 代码:二进制代码在不同的操作系统上有不同的编码规则,所以二进制代码是不兼容的。例如:
char *
使用机器的全字长,在32位中占4个字节,而在64位的机器中则占8个字节。
布尔代数
- 运算符号:
- 与:&&(位与:&)
- 或:||(位或:|)
- 非:!(位非:~)
- 位异或:^
整数运算
- 无符号运算
- 无符号运算本质上就是模运算,mod 2的w次幂。
- 加法
- 乘法
- 就是模幂运算。
- 补码运算
- 加法运算:两个数的w位补码之和与无符号之和有完全相同的位级表示。
- 溢出:
- 补码加法的溢出情况比无符号运算更为复杂,分为正溢出、正常、负溢出。正溢出就是超过正数的最大范围,负溢出就是超过负数的最大范围。
- 模掉w位的补码最高有效位的权重2的w次幂。
- 非运算:
- 对于范围在
[-2^(w-1),2^(w-1))
中的x,补码的非运算有如下两种情况: - x=-2(w-1)时,为-2(w-1)
- x>-2^(w-1)时,为-x
- 对于范围在
- 乘法运算:同无符号乘法。若为截断后的结果,则取结果的后w位作为计算结果。无符号运算和补码运算在“+”、“-”、“*”在位级上有相同的结果。
例题测试
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 20篇 | 400小时 | |
第一周 | 61/61 | 1/1 | 10/10 | 了解vim,gcc,gdb基本操作 |
第二周 | 0/61 | 1/2 | 10/20 | 了解信息的表示和处理 |