第一节 数据编码
一、定点数的编码
定点数
数值表示:(逢二进一)
x = x0x1x2…xn xi={0,1}, 0≤i≤n
x02n + x12n-1 + … + xn-121 + xn
数值范围
0≤x≤2n+1-1
定点小数
数值表示
x = x0 . x1x2…xn xi={0,1}, 0≤i≤n
x12-1 + … + xn-12-n+1 + xn2-n
数值范围
0≤x≤1-2-n
1. 原码表示法
定义(编码规则)
[x]原 =
[x]原
数值(求值方法)
x = (-1)x0(x12n-1 + … xn-12 + xn) x = (-1)x0(x12-1 + … xn-12-(n-1) + xn2-n)
数值范围
-2n +1 ≤ x ≤ 2n -1 -1+2-n ≤ x≤ 1-2-n
简便编码方法:加符号位
表 带符号数的四种编码表示
x0x1x2x3 |
作为原码编码时代表的值 |
|
0000 |
0 |
|
0001 |
+1 |
|
0010 |
+2 |
|
0011 |
+3 |
|
0100 |
+4 |
|
0101 |
+5 |
|
0110 |
+6 |
|
0111 |
+7 |
|
1000 |
-0 |
|
1001 |
-1 |
|
1010 |
-2 |
|
1011 |
-3 |
|
1100 |
-4 |
|
1101 |
-5 |
|
1110 |
-6 |
|
1111 |
-7 |
在数轴上的表示:

2. 补码表示法
编码规则
[x]补 =
求值方法
x = -x02n + x12n-1 + … + xn-12 + xn
例如:10000100的真值为-128+4=-124
数值范围
-2n≤ x ≤ 2n -1
简便方法1:正值直接取其原来的二进制码,对于负数是在对其按位取反之后再在最低位加1;
简便方法2:从最低位开始,对遇到的0和第一个1取其原码,从第一个1以后开始直到最高位均取其按位反码。
表 带符号数的四种编码表示
x0x1x2x3 |
原码 |
补码 |
|
0000 |
0 |
0 |
|
0001 |
+1 |
+1 |
|
0010 |
+2 |
+2 |
|
0011 |
+3 |
+3 |
|
0100 |
+4 |
+4 |
|
0101 |
+5 |
+5 |
|
0110 |
+6 |
+6 |
|
0111 |
+7 |
+7 |
|
1000 |
-0 |
-8 |
|
1001 |
-1 |
-7 |
|
1010 |
-2 |
-6 |
|
1011 |
-3 |
-5 |
|
1100 |
-4 |
-4 |
|
1101 |
-5 |
-3 |
|
1110 |
-6 |
-2 |
|
1111 |
-7 |
-1 |
在数轴上的表示:

模4补码
[x]补 =
3. 反码表示法
[x]反 =
x = -x0 (2n - 1) + x12n-1 + … + xn-12 + xn
-2n +1≤ x ≤ 2n -1
表 带符号数的四种编码表示
x0x1x2x3 |
原码 |
反码 |
补码 |
|
0000 |
0 |
0 |
0 |
|
0001 |
+1 |
+1 |
+1 |
|
0010 |
+2 |
+2 |
+2 |
|
0011 |
+3 |
+3 |
+3 |
|
0100 |
+4 |
+4 |
+4 |
|
0101 |
+5 |
+5 |
+5 |
|
0110 |
+6 |
+6 |
+6 |
|
0111 |
+7 |
+7 |
+7 |
|
1000 |
-0 |
-7 |
-8 |
|
1001 |
-1 |
-6 |
-7 |
|
1010 |
-2 |
-5 |
-6 |
|
1011 |
-3 |
-4 |
-5 |
|
1100 |
-4 |
-3 |
-4 |
|
1101 |
-5 |
-2 |
-3 |
|
1110 |
-6 |
-1 |
-2 |
|
1111 |
-7 |
-0 |
-1 |
在数轴上的表示:

4. 移码表示法
定义
[x]移 = 2n+x, -2n ≤ x < 2n
数值范围
-2n ≤ x ≤2n - 1
特点:保持了数据原有的大小顺序,便于进行比较操作。
表 带符号数的四种编码表示
x0x1x2x3 |
原码 |
反码 |
补码 |
移码 |
|
0000 |
0 |
0 |
0 |
-8 |
|
0001 |
+1 |
+1 |
+1 |
-7 |
|
0010 |
+2 |
+2 |
+2 |
-6 |
|
0011 |
+3 |
+3 |
+3 |
-5 |
|
0100 |
+4 |
+4 |
+4 |
-4 |
|
0101 |
+5 |
+5 |
+5 |
-3 |
|
0110 |
+6 |
+6 |
+6 |
-2 |
|
0111 |
+7 |
+7 |
+7 |
-1 |
|
1000 |
-0 |
-7 |
-8 |
0 |
|
1001 |
-1 |
-6 |
-7 |
1 |
|
1010 |
-2 |
-5 |
-6 |
2 |
|
1011 |
-3 |
-4 |
-5 |
3 |
|
1100 |
-4 |
-3 |
-4 |
4 |
|
1101 |
-5 |
-2 |
-3 |
5 |
|
1110 |
-6 |
-1 |
-2 |
6 |
|
1111 |
-7 |
-0 |
-1 |
7 |
在数轴上的表示:

定点小数没有移码定义
移码与补码的关系
编码表示的常见错误:编码与数值错位,编码带符号位,编码省略高位0