1、第二章信息编码与数据表示 教学目标教学重点教学过程 教学目标 数据在计算机中的表示方法及编码形式掌握进位计数制和数制之间的转换掌握数与字符的表示方法及校验方法 教学重点 进位计数制和数制之间的转换定点数和浮点数带符号数的表示方法字符编码数据校验码 教学过程 2 1数值数据的表示2 2非数值数据的表示2 3校验码作业 2 1数值数据的表示 一 进位计数制二 数据格式三 定点机器数的表示方法四 浮点机器数的表示方法 一 进位计数制 1 数制的基本概念2 数制转换3 十进制数的编码 1 数制的基本概念 数制的两大要素 基数R 指在这种进位制中允许使用的基本数码个数 基数为R的数制称为R进制数 R进制
2、数的主要特点就是逢R进1 权Wi 权也称位权 指某一位i上的数码的权重值 即权与数码所处的位置i有关 Wi Ri 假设任意数值N用R进制数来表示 形式为 N Dm 1Dm 2 D0 D 1D 2 D k R其中 Di为该进制的基本符号 Di 0 R 1 i k k 1 m 1 m 小数点在D0和D 1之间 1 数制的基本概念 则数值N的实际值为 例如 R 10 即十进制数 它的每一位上的数码Di只能取0 1 2 9 各个数码的权为10i i指示数码所处的位置 个位i 0 十位i 1 百位i 2 依此类推 思考 二进制 八进制 十六进制 1 数制的基本概念 例1 2345 459 10 2 10
3、3 3 102 4 101 5 100 4 10 1 5 10 2 9 10 3例2 11011 011 2 1 24 1 23 0 22 1 21 1 2 0 0 2 1 1 2 2 1 2 3 27 375 10例3 123 67 8 1 82 2 81 3 80 6 8 1 7 8 2 83 859375 10 拆分数字 2 数制转换 1 常用的几种数制的对应关系 2 二 八 十六进制转换为十进制 3 十进制转换为二 八 十六进制 1 常用的几种数制的对应关系 可参考P60表3 1 2 二 八 十六进制转换为十进制 转换方法 加权求和 例 5AC E6 16 5 162 10 161 1
4、2 160 14 16 1 6 16 2 1452 8984375 10十进制 Decimal 二进制 Binary 八进制 Octal 十六进制 Hexdecimal 数分别用D B Q H来标志 例如 1011 2 1011 B 1011B 1011b 123 45 2 123 45 D 123 45D 123 45 2B D 16 2B D H 43 8125 10 53 64 Q 3 十进制转换为二 八 十六进制 转换方法 可以分为以下两种方法直接转换 十进制 二 八 十六进制间接转换 十进制 二进制 八 十六进制 a 十进制转化为R进制 b 二进制转化为八 十六进制 a 十进制转化为
5、R进制 转换方法整数部分 除以R取余 先得低位 直到商为0 小数部分 乘R取整 先得高位 直到积为0或者达到精度要求为止 例 123 75 10 2 123 75 10 8 1111011 11 173 6 例4 将 105 10转换成二进制 2105余数结果2521最低位22602130 26123021101最高位得出 105 10 1101001 2 小数部分的精度要求 当小数部分不能整除为二进制时 则乘以2取整的过程中 积不会为0 或者当小数部分转化为二进制位数很长 这时由精度来决定二进制位数 例如 0 35 10 2无法整除 0 6875 10 2位数太长若要求精度大于10 则表示
6、左右两边的十进制值的差的绝对值 10 则我们只需取4位二进制小数即可满足要求 因为10 2 4 对小数部分 一般用乘2取整数法 其规则如下 将十进制数乘以2 所得乘积的整数部分即为对应二进制小数最高位的值 然后对所余的小数部分乘以2 所得乘积的整数部分为次高位的值 如此进行下去 直到乘积的小数部分为0 或结果已满足所需精度要求为止 例5 将 0 3125 10和 0 3128 10转换成二进制数 要求4位有效位 结果0 3125 2最高位0 6250 2 1 2500 20 5000 2最低位1 0000得出 0 3125 10 0 0101 2 结果0 3128 2最高位06256 2 12
7、512 205024 2最低位10048得出 0 3128 10 0 0101 2 两个二进制数字相同 为啥 例6 将 13 3125 10转换成八进制数 第一步 整数部分转换813余数81501 13 10 15 8得出 13 3125 10 15 24 8第二步 小数部分转换0 3125 82 5000 84 0000 0 3125 10 0 24 8 b 二进制转化为八 十六进制 二进制 八进制以小数点为中心分别向两边分组 每三位一组 写出对应的八进制数字 不够位数则在两边加0补足3位 二进制 十六进制以小数点为中心分别向两边分组 每四位一组 写出对应的十六进制符号 不够位数则在两边加0
8、补足4位 例 1011111 11 2 8 16 137 6 5F C 思考1 八 十六进制如何转化为二进制 八进制 二进制 将每位八进制数展开为3位二进制数 最高位和最低位的0可以略去 十六进制 二进制 将每位十六进制数展开为4位二进制数 最高位和最低位的0可以略去 例 765 23 8 2例 765 23 16 2 111110101 010011 11101100101 00100011 思考2 计算机中为什么采用二进制表示数据 1 具有二值状态的物理器件容易实现 2 二进制的运算规则简单 硬件实现容易 3 具有逻辑特性 可代表 真假 是非 3 十进制数的编码 提出的问题 如何在计算机内
9、使用二进制来表示十进制数据 1 二 十进制码 BCD码 2 十进制数串的表示方法 1 二 十进制码 BCD码 BCD BinaryCodedDecimal 码 使用二进制来编码十进制数字0 9 编码方法 一般使用4位二进制编码来表示1位十进制数字 在16个编码中选用10个来表示数字0 9 不同的选择构成不同的BCD码 分类 有权码 编码的每一位都有固定的权值 加权求和的值即是表示的十进制数字 如8421码 2421码 5211码 4311码 84 2 1码等 无权码 编码的每一位并没有固定的权 主要包括格雷码 余3码等 1 二 十进制码 BCD码 可参考P63表3 2和表3 3 几种常见的BC
10、D码 8421码 特点 4位二进制数位的权从高到低依次是8 4 2 1 8421码实际上就是十进制数字0 9的二进制编码本身 是最常用的一种BCD码 在没有特别指出的一般情况下 所提到的BCD码通常就是指8421码 格雷码 特点 又叫循环码 它的任何相邻的两个编码 例如2和3 7和8 9和0等 之间只有一位二进制位不同 优点 是用它构成计数器时 在从一个编码变到下一个编码时 只有一个触发器翻转即可 波形更完美 可靠 格雷码的编码方案有许多种 余3码 对应的8421码加上0011构成的 例7 求 5 10 8 10 解 5 BCD 0101 1000 1101 13 10 8 BCD 0 9 A
11、 F 0 9 6 0110 1 1 0 0 1 0 0 0 当和大于9时 需加6修正 8421码进位问题 余3码加法问题 例8 28 10 55 10 83 10 01011011 28 10 100011000 55 1011100011低位向高位产生进位 高位不产生进位 0011 0011低位 3 高位 3 10110110余3码运算规则是 当两个余3码相加不产生进位时 应从结果中减去0011 产生进位时 应将进位信号送入高位 本位加0011 2 十进制数串的表示方法 字符串形式 用ASCII码来表示十进制数字或符号位 即1个字节存放1位十进制数字或符号位 压缩的十进制数串形式 用BCD码
12、来表示十进制数字 即1个字节存放2个十进制的数字 符号位放在最低位数字位之后 一般用C 12 表示正号 用D 13 表示负号 例如 258被表示成258CH 两个字节 34被表示为034DH 两个字节 共同点 必须给出它在主存中的首地址和位长 优点是位长可变 许多机器中规定该长度从0到31 有的甚至更长 二 数据格式 计算机中参与运算的数据有两种 无符号数据 Unsigned 所有的二进制数据位数均用来表示数值本身 没有正负之分 带符号数据 Signed 则其二进制数据位 包括符号位和数值位 计算机中的带符号数据又称为机器数 1 机器数与真值机器数 把 符号代码化 并保存在计算机中的数据 真值
13、 是指机器数所真正表示的数值 用数值并冠以 符号的方法来表示 机器数的编码方法 原码 反码 补码 移码 二 数据格式 2 小数点的表示方法在机器数中 小数点及其位置是隐含规定的 有两种隐含方式 定点数 小数点的位置是固定不变的浮点数 小数点的位置是浮动的定点机器数分为定点小数 定点整数两种 浮点机器数中小数点的位置由阶码规定 因此是浮动的 二 数据格式 a 定点整数格式 c 浮点数格式 b 定点小数格式 三 定点机器数的表示方法 定点机器数的小数点的位置是固定不变的 可以分为两种 定点小数 用于表示纯小数 小数点隐含固定在最高数据位的左边 整数位则用于表示符号位 定点整数 用于表示纯整数 小数
14、点位置隐含固定在最低位之后 最高位为符号位 1 原码表示法2 反码表示法3 补码表示法4 移码表示法 1 原码表示法 1 表示方法 最高位表示数的符号 其他位表示数值位 符号位 0 正数 1 负数 数值位 与绝对值相同 对于定点整数 若X X1X2 Xn 则 X 原 0 X1X2 Xn 若X X1X2 Xn 则 X 原 1 X1X2 Xn 对于定点小数 若X 0 X1X2 Xn 则 X 原 0 X1X2 Xn 若X 0 X1X2 Xn 则 X 原 1 X1X2 Xn 和 只用于助记 在计算机中并无专用部件来表示 1 原码表示法 例1 X 1011 Y 1011 则 X 原 Y 原 例2 X 0
15、 1101 Y 0 1101 则 X 原 Y 原 例3 X 1011 Y 0 1101 求X和Y的8位原码机器数 X 原 Y 原 例4 0 原 0 1011 1 1011 0 1101 1 1101 0 0001011 1 1101000 1 原码表示法 2 0的表示 0的原码表示有两种形式 即分别按照正数和负数表示 0 原 00 0 0 原 10 0 3 表示范围 对于n 1位原码机器数X 它所能表示的数据范围为 定点整数 2n 1 X 2n 1定点小数 1 2 n X 1 2 n 包括1位符号位 n位数值位 2 反码表示法 1 表示方法 最高位表示数的符号 其他位表示数值位 符号位 0 正
16、数 1 负数 数值位 正数时 与绝对值相同 负数时 为绝对值取反 对于定点整数 若X X1X2 Xn 则 X 反 0 X1X2 Xn 若X X1X2 Xn 则 X 反 1 X1X2 Xn 对于定点小数 若X 0 X1X2 Xn 则 X 反 0 X1X2 Xn 若X 0 X1X2 Xn 则 X 反 1 X1X2 Xn 2 反码表示法 例1 X 1011 Y 1011 则 X 反 Y 反 例2 X 0 1101 Y 0 1101 则 X 反 Y 反 例3 X 1011 Y 0 1101 求X和Y的8位反码机器数 X 反 Y 反 0 1011 1 0100 0 1101 1 0010 0 00010
17、11 1 0010111 当X为正数时 X 反 X 原 当X为负数时保持 X 原符号位不变 而将数值部分取反 反码运算是以2 2 n为模 所以 当最高位有进位而丢掉进位 即2 时 要在最低位 1 例4 X 0 1011 Y 0 0100 则有 X 反 0 1011 Y 反 1 1011 X Y 反 X 反 Y 反 0 1011 1 1011 反 10 0110 其中 最高位1丢掉 并要在最低位加1 所以得 X Y 反 0 0111mod 2 2 4 2 反码表示法 例5 X 0 1011 Y 0 1100 则有 X 反 0 1011 Y 反 1 0011 X Y 反 0 1011 1 0011
18、 反 1 1110 其真值为 0 0001 反码运算在最高位有进位时 要在最低位 1 此时要多进行一次加法运算 增加了复杂性 又影响了速度 因此很少采用 2 反码表示法 2 反码表示法 2 0的表示 0的反码表示有两种形式 即分别按照正数和负数表示 0 反 00 0 0 反 11 1 3 表示范围 对于n 1位反码机器数X 它所能表示的数据范围为 定点整数 2n 1 X 2n 1定点小数 1 2 n X 1 2 n 包括1位符号位 n位数值位 3 补码表示法 1 表示方法 最高位为符号位 其他位为数值位 符号位 0 正数 1 负数 数值位 正数时 与绝对值相同 负数时 为绝对值取反后 末位加1
19、 对于定点整数 若X X1X2 Xn 则 X 补 0 X1X2 Xn 若X X1X2 Xn 则 X 补 1 X1X2 Xn 1 对于定点小数 若X 0 X1X2 Xn 则 X 补 0 X1X2 Xn 若X 0 X1X2 Xn 则 X 补 1 X1X2 Xn 0 00 1 3 补码表示法 例1 X 1011 Y 1011 则 X 补 Y 补 例2 X 0 1101 Y 0 1101 则 X 补 Y 补 例3 X 1011 Y 0 1101 求X和Y的8位补码机器数 X 补 Y 补 例4 0 补 0 1011 1 0101 0 1101 1 0011 0 0001011 1 0011000 例5
20、X 0 1011 则 X 补 0 1011X 0 1011 则 X 补 2 X 2 0 1011 1 0101数值零的补码表示形式是唯一的 即 0 补 0 补 0 0000这可根据补码定义计算如下 当X 0 0000时 X 补 0 0000 当X 0 0000时 X 补 2 X 10 0000 0 0000 10 0000 0 0000 3 补码表示法 例6 设X 0 1010 Y 0 0101 两数均为正数 X Y 补 0 1010 0 0101 补 0 1111 补 0 1111 X 补 Y 补 0 1010 0 0101 0 1111即 X Y 补 X 补 Y 补 0 1111例7 设X
21、 0 1010 Y 0 0101 X为正 Y为负 X Y 补 0 1010 0 0101 补 0 0101 X 补 Y 补 0 1010 0 0101 补 0 1010 2 0 0101 2 0 0101 0 0101即 X Y 补 X 补 Y 补 0 0101 3 补码表示法 例8 设X 0 1010 Y 0 0101 X为负 Y为正 X Y 补 0 1010 0 0101 补 0 0101 补 1 1011 X 补 Y 补 0 1010 补 0 0101 补 1 0110 0 0101 1 1011即 X Y 补 X 补 Y 补 1 1011例9 设X 0 1010 Y 0 0101 X
22、Y均为负数 X Y 补 0 1010 0 0101 补 0 1111 补 1 0001 X 补 Y 补 1 0110 1 1011 10 1 0001 1 0001即 X Y 补 X 补 Y 补 1 0001 3 补码表示法 在例6 例9中 包括了X Y各为正负数的各种组合 证实了当运算结果不超出机器所能表示的范围时 X Y 补 X 补 Y 补 例10 设X 0 0000 Y 0 0000 X 补 Y 补 X Y 补 2 0 0000 2 0 0000 4 0 0000 0 0000说明两个负零相加 最后得正零 再次说明了补码零在机器中的表示形式是唯一的 例11 设X 0 1011 Y 0 0
23、101 则有 X Y 补 X 补 Y 补 1 0101 1 1011 11 0000 1 0000 当补码加法运算的结果不超出机器范围时 可得出以下重要结论 1 用补码表示的两数进行加法运算 其结果仍为补码 2 X Y 补 X 补 Y 补 3 符号位与数值位一样参与运算 3 补码表示法 而X Y的真值 0 1011 0 0101 1 0000 为 1 由此说明一个数的补码值的范围在 1和 1 2 n 之间 假设数值部分为n位 对于减法运算 因为 X Y 补 X Y 补 X 补 Y 补 所以计算时 可以先求出 Y的补码 然后再进行加法运算 这样在用逻辑电路实现加减法运算时 可以只考虑用加法电路
24、而不必设置减法电路 图3 1为实现加法运算的逻辑示例 3 补码表示法 图3 1实现加法运算的逻辑示例 参见教材P67说明 3 补码表示法 3 补码表示法 2 0的表示 0的补码表示形式是唯一的 即分别按照正数和负数表示均一致 为全零 0 补 00 0 0 补 00 0 3 表示范围 对于n 1位补码机器数X 它所能表示的数据范围为 定点整数 2n X 2n 1定点小数 1 X 1 2 n计算机中的整型数据 int 均用补码来表示 正数的原码 补码和反码的表示形式是相同的 而负数则各不相同 包括1位符号位 n位数值位 4 移码表示法 1 表示方法 最高位为符号位 其他位为数值位 符号位 1 正数
25、 0 负数 数值位 正数时 与绝对值相同 负数时 为绝对值取反后 末位加1 对于定点整数 若X X1X2 Xn 则 X 移 1 X1X2 Xn 若X X1X2 Xn 则 X 移 0 X1X2 Xn 1 对于定点小数 若X 0 X1X2 Xn 则 X 移 1 X1X2 Xn 若X 0 X1X2 Xn 则 X 移 0 X1X2 Xn 0 00 1 移码表示 即为补码的符号位取反 4 移码表示法 例1 X 1011 Y 1011 则 X 移 Y 移 例2 X 0 1101 Y 0 1101 则 X 移 Y 移 例3 X 1011 Y 0 1101 求X和Y的8位移码机器数 X 移 Y 移 例4 0
26、移 1 1011 0 0101 1 1101 0 0011 1 0001011 0 0011000 4 移码表示法 2 0的表示 0的移码表示形式是唯一的 即分别按照正数和负数表示均一致 0 移 10 0 0 移 10 0 3 表示范围 对于n 1位移码机器数X 它所能表示的数据范围为 定点整数 2n 1 X 2n 1定点小数 1 X 1 2 n移码通常作为浮点数的阶码 包括1位符号位 n位数值位 四 浮点机器数的表示方法 1 浮点机器数的格式2 浮点机器数的规格化表示3 IEEE754浮点数标准 1 浮点机器数的格式 浮点机器数用于表示实数 其小数点的位置由其中的阶码规定 因此是浮动的 浮点
27、数N的构成 浮点数的格式 阶码的底是隐含规定的 在机器中 为了方便浮点数大小的比较 通常将数符放置在浮点数的首位 1 浮点机器数的格式 尾数M 为定点小数 尾数的位数决定了浮点数有效数值的精度 尾数的符号代表了浮点数的正负 因此又称为数符 尾数一般采用原码和补码表示 阶码E 为定点整数 阶码的数值大小决定了该浮点数实际小数点位置与尾数的小数点位置 隐含 之间的偏移量 阶码的位数多少决定了浮点数的表示范围 阶码的符号叫阶符 阶码一般采用移码和补码表示 阶码的底R 一般为2 8或16 且隐含规定 2 浮点机器数的规格化表示 浮点数的规格化表示 为了充分利用尾数的二进制数位来表示更多的有效数字 将尾
28、数的绝对值限定在某个范围之内 例如 R 2 则规格化浮点数的尾数M应满足条件 最高有效位为1 即 对于非规格化浮点数 可以通过修改阶码和左右移尾数的方法来使其变为规格化浮点数 这个过程叫做规格化 2 浮点机器数的规格化表示 例 一浮点数的阶码为6位 包括一位阶符 尾数为10位 包括一位数符 阶码与尾数均采用补码表示 阶码的底为2 写出X与Y的规格化浮点数 1 X 123 25 2 Y 34 128 1 X 123 25 10 1111011 01 2 0 111101101 2 7 2 浮点机器数的规格化表示 EX 7 00111 2 MX 0 111101101 EX 补 000111 MX
29、 补 1 000010011则 X 浮 1000111000010011 2 Y 34 128 10 0 010001 2 0 10001 2 1EY 00001 MY 0 100010000 EY 补 111111 MY 补 0 100010000则 Y 浮 0111111100010000 3 IEEE754浮点数标准 根据IEEE754国际标准 常用的浮点数格式有3种 阶码的底隐含为2 短实数又称为单精度浮点数 长实数又称为双精度浮点数 临时实数主要用于进行浮点数运算时保存临时的计算结果 作业 课堂练习 1 已知 X 补 1 1010 求X X 原 X 反 X 移 2 求以下各机器数的十
30、进制真值 0 0110 1 0110 1 1001 0 1010 X 原 1 0000000 则X X 补 1 0000000 则X X 反 1 0000000 则X X 移 1 0000000 则X X 原 1 1101 则X X 补 1 1101 则X X 反 1 1101 则X X 移 1 1101 则X X 原 0 1000 则X X 补 1 1000 则X X 反 0 1000 则X X 移 0 1000 则X X 0X 128 10X 127 10X 0X 1101BX 0011BX 0010BX 1101BX 1000BX 1000BX 1000BX 1000B 1111111 1 2 1111111 2 TheEnd