文章目录
- 一、信息的二进制编码
- 1. 信息编码的必要性
- 2. 信息的二进制编码
- 二、数值数据的表示
- 1. 进位计数制
- 2. 定点与浮点表示
- 3. 定点数的编码表示
- (1)原码
- (2)反码
- (3)补码
- (4)移码
- (5)四种定点数编码形式的对比
一、信息的二进制编码
1. 信息编码的必要性
- 计算机内部处理的所有数据都必须是 “数字化编码” 过的数据
- 现实世界中的信息(声音、文字、图像…)由输入设备转二进制编码表示,输入设备必须有 “离散化” 和 “编码” 两方面功能
- “计算机层次结构” 在数据表示中的反映
- 媒体信息被计算机处理的过程
2. 信息的二进制编码
- 数值数据表示的三要素(确定一个数值数据的值必须先确定这三个要素)
- 用二进制编码
- 进位计数制
- 定、浮点表示
1. 进位计数制
在R进制数字系统中,采用R个基本符号(0,1,2,.,R- 1)表示各位上的数字,采用 “逢R进一” 的运算规则,对于每一个数位i,该位上的权为
。R被称为该数字系统的基数
在计算机系统中,常用的几种进位记数制有下列几种
进制
R
后缀表示
基本符号
二进制
2
B
0,1
八进制
8
O
0,1,2,3,4,5,6,7
十六进制
16
H
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
十进制
10
D
0,1,2,3,4,5,6,7,8,9
进制转换
-
R进制 → 十进制
:按权展开
-
-
十进制 → R进制
:整数小数分开处理 - 整数部分的转换方法是:“除基取余,上右下左”。也就是说,用要转换的十进制整数去除以基数R,将得到的余数作为结果数据中各位的数字,直到余数为0为止。上面的余数(先得到的余数) 作为右边低位上的数位,下面的余数作为左边高位上的数位。
- 小数部分的转换方法是:“乘基取整,上左下右”。也就是说,用要转换的十进制小数去乘以基数R,将得到的乘积的整数部分作为结果数据中各位的数字,小数部分继续与基数R相乘。以此类推,直到某步乘积的小数部分为0或已得到希望的位数为止。最后,将上面的整数部分作为左边高位上的数位,下面的整数部分作为右边低位上的数位。
-
二/八/十六进相互转换
-
八/十六进制 → 二进制
:每一位数改成等值的3/4位二进制数,整数部分高位0省略;小数部分低位0省略 -
二进制 → 八/十六进制
:整数部分从低向高每3/4位数用一个等值八/十六进制数替换,不足时高位补0;小数部分从高向低每3/4位数用一个等值八/十六进制数替换,不足时低位补0;
2. 定点与浮点表示
计算机中只能表示0/1,不能表示小数点,小数点的处理方法区分定点数和浮点数
定点数可能是小数或整数,只是小数点位置要么在最左要么在最右,定点数是浮点数的组成部分;
- 定点数和浮点数是计算机中整数和实数表示的基础
浮点数中
- 绝对值最小的非零数是
- 绝对值最大的非零数是
- 绝对值最小的非零数是
3. 定点数的编码表示
- 定点/浮点表示解决了小数点问题
- 如何数字化符号部分:用0和1表示正负号,通常0代表正号。
- 数字化的符号部分如何和数值部分一起参与运算:各种把符号位和数值部分一起编码的方法,因为浮点数 = 定点整数 + 定点小数,所以只要考虑定点数的编码表示
- 定点数编码方法:原码、反码、补码、移码
(1)原码
示例(8位原码表示十进制数)
- 原码整数和小数的表示范围,关注范围和特殊值
(2)反码
示例(8位反码表示二进制数)
- 反码整数和小数的表示范围,关注范围和特殊值
无论整数还是小数,原码和反码的表示范围相同,且0都有两种表示方法
(3)补码
模运算系统
- 一天中的24小时是一个模运算系统,任意时刻的钟点数都是0到23间的一个整数,这有点类似24进制
- 今天的第24点,就是明天的0点;
- 今天的25点,就是明天的凌晨1点;
- 今天的-5点,就是昨天的19点,我们称19是-5对模24的补码 / -5的模24补码等于19
- 钟表上的12个刻度也是一个模运算系统。假定时钟现在指向10,要把指针只向6,有两种方法
- 倒拨4格:10 - 4 = 6
- 正拨8格:10 + 8 = 18 = 6 (mod 12)
- 所以模12系统中 -4 = 8 (mod 12),我们称8是-4对模12的补码 / -4的模12补码等于8
- 根据以上示例,可以得结论:一个模运算系统中:
- 一个负数可以用它的正补数(负数的补码)代替,
一个负数的补码 = 模 - 该负数的绝对值
- 一个负数和其正补数的绝对值之和 = 模
- 一个正数的补数即为其本身
- 可以把减法运算转换为加法运算:
A - B = A + B的补码
- 计算机也是一个模运算系统
- 计算机中的存储部件和运算部件都只有有限位,如果运算产生了多于n位的数据,高位舍去,这称为 “溢出”
- 在计算机中,模是根据数据长度来的,n的模就是1后加n个0
补码
- 编码规则
用途:表示定点整数
- 特殊数的补码(假定机器数有n位)
注:计算机中并不会出现
-1.0
的补码,这里只是想说明:同一个真值在机器中可能有不同的机器数!,另外可以看到,0的补码表示只有一种示例
- 补码整数和小数的表示范围,关注范围和特殊值
- 补码与真值的简单转换
到
:连带符号位 “各位取反,末尾加1”
和
的互转:符号位/正负性单独判断,数值部分“各位取反,末尾加1”
(4)移码
- 移码主要用于表示浮点数的阶码,只能表示整数
- 同一个真值的移码和补仅差一个符号位
- 移码的表示范围
(5)四种定点数编码形式的对比
原、反、补码的最高位均为符号位
真值为正时,原、反、补码形式相同,即符号位用0表示,数值部分同真值
真值为负时,原、反、补码形式不同,符号位都用1表示,数值部分
- 反码是原码的 “每位取反”
- 补码是原码的 “每位取反再加1”
移码和补码仅符号位不同
关于表示范围:
- 原码和反码的整数、小数表示范围相同,且0都有2种表示方法
- 补码和移码的整数表示范围相同,且0都只有1种表示方法
用途
- 原码:计算机中用原码小数表示实数(浮点数)尾数部分
- 移码:计算机中用移码整数表示实数(浮点数)指数部分
- 补码:计算机中用补码表示有符号整数
- 反码:不直接使用,一般仅用于原码和补码间的变化过程