20145338 《信息安全系统设计基础》第3周学习总结
教材学习内容总结
信息存储
十六进制表示法
以0x或0X开头的数字常量为十六进制
二进制-十六进制相互转换(转换:以二进制作为中间变量)
二进制与八进制的转化是三位对应一位
字
虚拟地址是以这样的一个字来编码的。每台计算机都有一个字长,指明整数和指针数据的大小。
字长决定虚拟地址空间的最大大小,字长为w,虚拟地址的范围为1-(2^w-1),w=32或64:通常说的电脑是32位还是64位,(CPU一次处理数据的位数)
数据大小
C语言支持整数和浮点数的多种数据格式
寻址和字节顺序
小端法——在存储器中按照从最低有效字节到最高有效字节的顺序存储对象。小端法:高对高,低对低
大端法——从最高有效字节到最低有效字节的顺序存储。大端法:高对低,低对高。
表示字符串
使用ASCⅡ字符码的任何系统上都能得到相同的结果,与字节顺序和字大小规则无关。a-z的ASC||码为0x61-0x7A
表示代码
二进制代码是不兼容的。
布尔代数
二进制值是计算机编码、存储、操作信息的核心(0、1)
逻辑运算——0或1
位运算————位向量
~=NOT
&=AND
|=OR
^=异或
*位向量:有固定长度为w,由0、1组成的串。每个对应元素之间的运算。 掩码。通过指定一个位向量掩码,有选择的使能或不能屏蔽一些信号。(0表示被屏蔽)
位级运算
位运算——位向量(有固定长度为w,由0、1组成的串,每个对应元素之间的运算)
掩码:通过指定一个位向量掩码,有选择的使能或不能屏蔽一些信号(0表示被屏蔽)
位级表达式的计算,要将通过转化为二进制表示进行二进制运算再转换回原来的进制来进行
~0:生成一个全1的掩码
逻辑运算
逻辑运算——0或1
所有非零参数都代表TRUE,0参数代表FALSE
与位运算的区别:只有当参数被限制为0或1时,逻辑运算才与按位运算有相同的行为;如果对第一个参数求值就能确定表达式的结果,逻辑运算符就不会对后面的参数求值
移位运算
逻辑右移:在左端补k个0,多用于无符号数移位运算
算术右移:在左端补k个最高有效位的值,多用于有符号数移位运算
整数表示
补码编码
补码的最高位是表示符号位,解释为负权,“权重”为-2的(w-1)次方,即无符号表示中的权重的负数。符号位为1,表示值为负,符号位为0,表示值为非负
补码的范围:-2(w-1)~2(w-1)-1,即|TMin|=|TMax|+1
无符号数编码(U)和补码(T):UMax = 2 TMax + 1
无符号数编码
数据类型long long是在ISO C99中引入的。(编译:gcc -std=c99)。
补码编码
最常见的有符号数的计算机表示方式。
正数的补码=原码
负数的补码=原码各位取反再加1
最高有效位也叫符号位。
有符号数和无符号数的转换
有符号数换为无符号数:非负数——保持不变;负数——加上2^w,转换成大正数
无符号数换为有符号数:以2的w-1次方为界限,小于它——保持不变;大于它——减去2^w,转换为负数值
扩展
零扩展:在开头添0(多用于无符号数转换为一个更大的数据类型)
符号扩展:添加最高有效位的值的副本(多用于补码数字转换,最高有效位是什么,就添加什么。)
截断数字
可能会改变数值——溢出的一种形式
将一个w位的数截断为k位数字时,就会丢弃高w-k位
对于无符号数来说,就相当于 mod 2的k次幂
对于有符号数来说,先按照无符号数截断,然后再转化为有符号数
整数运算
无运算符号
无符号加法是一种模运算形式。即mod 2^w
溢出
整数运算实际上是一种模运算形式。表示数字的有限字长限制了可能的值得取值,结果可能溢出。
一个算术运算的溢出——完整的整数结果不能放到数据类型的字长限制中。
x+y>=x,若s没有溢出,可以肯定s>=x;若s溢出,s=x+y-2^(w).
*s=x+(u w)y. x>=0,y<=2^(w)-1,均是非负整数。
补码的非
对每一位求补,再对结果+1
设k为最右面的1的位置,将k左边的所有位取反。
乘以常数
常数为2的k次幂:左移k位
常数不是2的整数次幂:将常数C表示为2的几个整数次幂的和,结合移位运算和加法运算
除以2的幂
右移时需要区分无符号数和补码
整数除法总是舍入到零
无符号数——逻辑右移:无符号数除以2的k次幂,就等同于对其逻辑右移k位
补码——算术右移:x≥0时,除以2的k次幂等价于将x算术右移k位;x<0时,先将x加上(2^k)-1,再算术右移k位
浮点数
二进制小数
小数的二进制表示法只能表示那些能够被写成x X (2^y)的数,其他的值只能近似的表示。
以小数点为界:左边第i位,权重为2的i次幂;右边第i位,权重为1/2的i次幂
IEEE浮点表示
1.用V = (-1)s * M * 2E的形式来表示一个数:
符号:s决定这个数是负数(s = 1)还是正数(s = 0),数值0的符号位解释作为特殊情况处理。
尾数:M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε。
阶码:E的作用是对浮点数据加权,这个权重是2的E次幂(可能是负数)
两种精度:
单精度(float),k=8位,n=23位,一共32位;
双精度(double),k=11位,n=52位,一共64位。
浮点运算
浮点加法:浮点加法是可交换的;浮点加法不具结合性;大多数值的浮点加法都有逆元,除了无穷和NaN;浮点加法满足单调性
浮点乘法:浮点乘法是可交换的、浮点乘法不具有结合性、浮点乘法的单位元为1.0、浮点乘法在加法上不具备分配性;在一定条件下满足单调性
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 100/500 | 2/4 | 18/38 | |
第三周 | 300/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |