数
一、数的分类
- 带符号数与无符号数:
- 带符号数:数的最高位作为符号位,0表示正数,1表示负数。
- 无符号数:数的所有位均用来表示数值的大小,没有专门的符号位。
- 真值与机器数:
- 真值:利用“+”、“-”表示数的符号,数值部分为数的绝对值。
- 机器数:在机器中用最高位表示数的符号,其它位表示数值的大小。最高位为符号位,规定用“0”表示正,“1”表示负。
二、数制角度
根据数制的不同,数的表示方法可以分为二进制数、十进制数、八进制数和十六进制数等。
- 二进制数:只包含0和1两个数字,每一位的值取决于它的位置(例如,1101表示2^3 + 2^2 + 0 + 2^0 = 13)。
- 十进制数:包含0到9这10个数字,每一位的值取决于它的位置(例如,123表示1×10^2 + 2×10^1 + 3×10^0 = 123)。
- 八进制数:包含0到7这8个数字,每一位的值取决于它的位置(例如,127表示8^2 + 2×8^1 + 7×8^0 = 87)。
- 十六进制数:包含0到9这10个数字以及A、B、C、D、E、F这6个字母(分别表示十进制的10到15),每一位的值取决于它的位置(例如,2F表示2×161 + 15×160 = 47)。
三、计算机编码角度
在计算机中,数的表示方法主要有原码、反码和补码三种。
- 原码:
- 正数:原码表示就是真值(例如,+11的原码为00001011)。
- 负数:原码最高位为1,其余位是真值的绝对值(例如,-11的原码为10001011)。
- 0值:原码表示的0有两种,0000和1000都表示0。
- 补码:
- 正数:补码的表示和原码相同(例如,+11的补码为00001011)。
- 负数:补码最高位为1,其余位在原码的基础上取反+1(例如,-11的原码为10001011,取反后为11110100,再加1得到补码11110101)。
- 0值:补码表示的0只有一种,即0000。
- 反码:
- 正数:反码的表示和原码相同(例如,+11的反码为00001011)。
- 负数:反码最高位为1,其余位在原码的基础上取反(例如,-11的反码为11110100)。
- 0值:反码表示的0有两种,0000和1000都表示0。
- 移码:
- 移码主要用于浮点数的运算阶码
- 无论正数负数,都是将该原码的补码的第一位取反得到原码
四、小数点表示方法
对于小数,主要有定点表示法和浮点表示法两种。
- 定点表示法:小数点的位置固定不变。根据小数点位置的不同,可以分为纯小数表示法和整数表示法。
- 浮点表示法:小数点的位置是不定的,可以浮动。一个浮点数由符号位、阶码和尾数三部分组成,其中阶码表示小数点的位置,尾数表示数的有效值。
- 浮点数的运算
- 算术运算和逻辑运算
校验码
码距:两个编码之间变成另一个编码所需要改变的最少位数。例如编码0011与0001只有一位不同,所以这一组编码的码距就是1。
码距越大,越利于纠错和检错
一、奇偶校验码
在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或偶数(偶校验)。这样做可以使码距变为2。
只能检错(1位),而且不能改错。
二、循环冗余校验码CRC
只能检错,不能改错。
采用模二运算
三、海明校验码
本质上也是奇偶校验码。
考点-->校验码的位数与数据位的位数之间的关系
n+k<=2^k-1 n是已知的数据位的个数,k是未知的校验码位个数
(实际上考研使用 1,2,4,8,16,32 .......... 的方法只要判断什么时候这个数超过了当前数据大小,就能找到最小的k)
唯一的能检错,能改错的校验码方式(全村的希望哈哈哈哈)