




已阅读5页,还剩105页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据的表示方法和数据校验 数据的表示方法及其转换 数据的表示方法及其转换 数据的表示方法及其转换 数制计算机中常用的几种进位数制 数制 基数 进位方法 基本符号 二进制2逢2进10 1八进制8逢8进10 1 2 7十进制10逢10进10 1 2 9十六进制16逢16进10 1 9 A B F 数据的表示方法及其转换 计算机中采用二进制的原因电路简单工作可靠简化运算逻辑性强 可有效实现二值逻辑运算 数据的表示方法及其转换 不同数制间的数据转换二进制数 八进制数与十六进制数之间的转换将二进制数转换为十进制数十进制数转换为二进制数十进制数转换成八进制数 十六进制数 数据的表示方法及其转换 数据符号的表示数据的 真值 用 作为数符后跟数据的绝对值的数据表示形式数据的 机器数 将数据的数符数字化形成的计算机内部的数据表示形式 与数值数据的编码方法紧密关联在计算机中表示数符的一种方法是用一个二进制位来表示数符 通常取 0 1 数据在计算机中表示时 不能省略数符 数据的表示方法及其转换 十进制数位的编码与运算人们所习惯使用的数值数据是十进制形式的 而计算机中保存 处理数值数据所用的是二进制在计算机中 整数是精确表达的 运算也不会必然地造成精度损失 而实数则不然 相应地 有 实数在计算机中执行近似运算采用相对精度制十进制实数不能精确转换成二进制形式这使得虽然一般应用问题中的 计算 不会产生不良影响 但对于要求按绝对精度进行实数 计算 的应用问题 如财务数据 工程数据 就难以适应在现代计算机中 对数值数据的处理提供两种方式的系统机制 一种是直接二进制运算 另一种是为基于二进制运算器直接进行十进制运算提供基础性的支持 数据的表示方法及其转换 十进制数位的编码与运算也就是说 如果应用问题中的 计算 要求与计算机中的处理一致 则计算机系统的硬件对之提供全面地系统支持 如果应用问题中的 计算 要求与计算机中的处理不一致 则硬件为相应要求的实现提供基础性支持 在此基础上通过软件的作用可使问题要求得以满足这样 十进制形式的数值数据在计算上进行处理时 硬件提供了两条途径 人们可将十进制数转换为二进制形式 在计算机内部存储 处理 传送 当要输出时 再将相应二进制结果转换为十进制 这是一般的做法人们也可将十进制数在计算机内部以某种方式直接存储 处理 传送应当注意的是 计算机是基于二进制实现数据处理的 数据的表示方法及其转换 十进制数位的编码与运算为了达到上述目的 必须解决两个问题 十进制数的数位 数字 表示问题一个完整的十进制数 包含任意个数位 可能带有数符 遵循十进制计数规则 的表示问题十进制数位的编码与运算问题 如何在只能识别与处理二进制的计算机中有效地表示构成十进制数的数位 使得相关的各种处理要求都能被高效可靠地实现十进制数值的表示与存储问题 如何有效地解决十进制数值的数符表示与数值表示 使得相关的各种处理要求都能被高效可靠地实现用基2码表示一个十进制数位的问题 由于23 10 因此 至少需要用4位基2码来编码一个十进制数位 当然 也可以用多于4位的基2码来编码一个十进制数位 通常采用的是4位基2码编码方案 数据的表示方法及其转换 十进制数位的编码与运算由于4位基2码可有16中不同的组合 因此 要从中选出10种来表示十进制数位的0 9 有多种方案可供选择有权码 表示一位十进制数的基2码的每一位有确定的权 一般用8421码 其4个基2码的权从高到低分别为8 4 2 和1用0000 0001 1001分别表示0 1 9 每个数位内部满足二进制规则 故称这种编码为 以二进制编码的十进制 BinaryCodedDecimal 简称BCD 码 数据的表示方法及其转换 十进制数位的编码与运算在计算机内部实现BCD码算术运算 要对运算结果进行修正 对加法运算的修正规则是 如果两个BCD码相加之和小于或等于 1001 2 即 9 10 不需要修正若相加之和大于或等于 10 10 要进行加6修正 并向高位进位另外几种有权码 如2421 5211 4311码 见表2 1 也是用4位基2码表示一个十进制数位 但4位二进制码之间不符合二进制规则 这几种码有一个特点 即任何两个相加之和等于 9 10的二进制码互为反码例如 在2421码中 0 0000 与9 1111 1 0001 与8 1110 互为反码 数据的表示方法及其转换 十进制数位的编码与运算 数据的表示方法及其转换 数据的表示方法及其转换 十进制数位的编码与运算格雷码的编码规则 任何两个相邻编码只有一个二进制位不同 而其余三个二进制位相同 其优点是从一个编码变到下一个相邻编码时 只有一位发生变化 用它构成计数器时可得到更好的译码波形 格雷码的编码方案有多种 表2 2给出两种常用的编码值 数据的表示方法及其转换 数据的表示方法及其转换 十进制数位的编码与运算也有用多于4位基2码 如用5位 7位 甚至10位基2码 来表示一个十进制数位的方案 有些属于无权码 有些属于有权码五中取二码 2 out of 5code 用5位基2码 并且每个代码必须包含2个 1 和3个 0 因此提供了一位 或奇数位 的校错能力蠕变码 CreepingCode 也用5位基2码 是由一个 1 逐次移位扩展和紧缩而形成的 符合格雷码的编码规则二元五进制码 BiquinaryCode 用7位基2码 其位权从高向低分别为5043210 每个码包含2个 1 和5个 0 是有一位校错能力的有权码 数据的表示方法及其转换 数据的表示方法及其转换 数字串在计算机内的表示与存储一个十进制数通常包含多位数字 由于不能硬性规定十进制数的长度 因而只能将其抽象为 数字串 在实践中 十进制数值可同时包含整数部分和小数部分 然而 这里仅考虑整数问题十进制数串在计算机内主要有两种表示形式 字符串形式和压缩十进制数串字符串形式 一个字节存放一个十进制数位或符号位 存放的是0 9十个数字和正负号的ASCII编码值 在主存中 这样的一个十进制数占用连续的多个字节 因此 为了指明这样一个数 需要给出 该数在主存中的起始地址数据所含符号个数 串长 数据的表示方法及其转换 数字串在计算机内的表示与存储十进制数可以是无符号的 也可以是带符号的 对于字符串形式的带符号十进制数 根据其数符处理方式的不同 可进一步划分其为 前分隔数字串 和 后嵌入数字串 前分隔数字串 让符号位占用单独一个字节并放在数字串的最前面 用字符 ASCII码值为2BH 表示正号 用字符 ASCII码值为2DH 表示负号 如 123和 123的存储表示分别为 数据的表示方法及其转换 数字串在计算机内的表示与存储后嵌入数字串 符号位不单独占用存储空间 而是把它嵌入到最低一位数字里边 其规则是 把负号变成十六进制的40并将其与最低数字位的值相加 如 123和 123的存储表示分别为 注意 对前分隔或后嵌入数字串 都要给出它的首字符的主存地址和长度 长度为0的数字串的值为0 对这两种方式表示的数进行算术运算是很不方便的 因为每个数字符占用一个字节 其低四位的值表示数值 而高四位的值在进行算术运算时不具有数值的意义 数据的表示方法及其转换 数字串在计算机内的表示与存储压缩的十进制数字串形式 一个字节存放两个十进制的数位 它比字符串形式节省存储空间 又便于直接完成十进制数的加减运算用压缩的十进制数串表示一个数 要占用主存连续的多个字节 每个数位占用半个字节 即4个二进制位 其值可用BCD码或数字符的ASCII码的低4位表示 符号位也占半个字节并放在最低数字位之后 其值选用四位编码中的六种冗余状态中的有关值 如用12表示正号 用13表示负号 在这种表示中 规定数位加符号位之和必须为偶数 当其不为偶数时 应在最高数字位之前补一个0 例如 无符号数和有符号数 无符号数在计算机中 参与运算的数有两大类 无符号数和有符号数数据一般存放在计算机的寄存器中 通常 寄存器的位数与机器字长一致在存放无符号数时 寄存器中的每一位都被用来表示数据的值若用16位的寄存器来保存数据值 则有 当用来存放无符号数值时 其表示范围为0 65535当用来存放有符号数值时 则其最大表示范围为 32768 32767 无符号数和有符号数 无符号数和有符号数 无符号数和有符号数 无符号数和有符号数 无符号数和有符号数 有符号数及其编码 补码表示法关于补码表示法 先讨论补码的导出及基本性质下面全面分析一下原码表示法进行加减运算的各种情况 无符号数和有符号数 有符号数及其编码 补码表示法从上表可以看出 由于操作数用原码表示 使得在两操作数符号相异时 应作加运算时实际上却被改为减运算 本应作减运算实际上改为加运算倘若能找到一种机器数的表示法 对它所表示的正负数 要求做加法就作加法 且结果为正确的机器数表示 对于做减法 减去一个负数等于加上与这个负数值对应的正数 减去一个正数 等于加上与这个正数值相等的负数 所以如能解决这种机器数表示法所能表示的正负数之间的转换 那么减法也能转变为加法 另外 在运算中使符号位与数值部分一起参与运算从而简化了运算规则 这对于简化机器结构大有好处人们引入数的补码表示 有效地解决了上述有关的机器执行有符号数加减法的复杂性问题 无符号数和有符号数 有符号数及其编码 补码表示法先看两个十进制数的运算 如果假定使用两位十进制数运算器来机械性地完成上述加法运算 则在做 时 多余的100将会因为超出了运算器的位数和范围而被自动丢掉 结果变成了41 与 的结果相同 在数学上可以用同余式表示 79 38 79 62 41 mod100 进一步地 可定义 38 62 mod100 此时称 38的补码 对模100而言 是62 也就是说 一个负数用其补码代替 同样可得到正确的运算结果 即负数用补码表示时 可以把减法转化为加法 无符号数和有符号数 无符号数和有符号数 有符号数及其编码 补码表示法整数补码的定义 对于n位整数 其补码的定义为 下面以小数为例 对补码的运算作些简要讨论 有关讨论同样也适应于整数 若 X Y 则 X 补 X Y 补 Y 2 X Y 0 相应地 有 若1 X Y 0 则根据定义 有 X Y 补 X Y X 补 Y 补若2 X Y 1 由于超出了小数的范围 我们说 加法运算产生了 正溢出 无符号数和有符号数 有符号数及其编码 补码表示法若1 X 0 Y 1 0 X 1 Y 类似 则 X 补 X Y 补 2 Y 1 X Y 1 相应地 有 若1 X Y 0 则有 X Y 补 X Y 2 X Y X 补 Y 补若0 X Y 1 则有 X Y 补 X Y 2 X Y X 补 Y 补若0 X 1 0 Y 1 则 X 补 2 X Y 补 2 Y 0 X Y 2 相应地 有 若0 X Y 1 则有 X Y 补 2 X Y 2 X 2 Y X 补 Y 补 mod2 无符号数和有符号数 有符号数及其编码 补码表示法若 1 X Y 2 由于其绝对值超出了小数的范围 我们说 加法运算产生了 负溢出 综合以上讨论 我们可以得出结论 在无溢出 正溢出 负溢出 的情况下 X Y 补 X 补 Y 补 mod2 数据的原码和补码间的转换 在已知一个有符号数的原码而想要将其转换为补码表示时 可行途径有 根据定义进行转换 原码 真值 补码基于两者间的关联直接进行转换数据原码与补码间的关联 由原码和补码的定义 有 若1 X 0 则有 X 原 X 补 X 无符号数和有符号数 有符号数及其编码 补码表示法若0 X 1 设 X 原 1 X1X2 Xn 则有 X 0 X1X2 Xn 由补码的定义可知 X 补 2 0 X1X2 Xn 1 0 11 1 0 X1X2 Xn 0 00 01令X X1X2 Xn NOTX 为X1X2 Xn按位对应取反 即1 0 0 1 所得数据 则NOTX 0 11 1 0 X1X2 Xn X 补 1 0 NOTX 0 00 01 1 NOTX 0 00 01 由此可知 对于正数 原码与补码是相同的 对于负数 原码与补码之间的转换规则为 符号位不变 数值部分求反加 加在最低位 无符号数和有符号数 有符号数及其编码 补码表示法在已知 X 补的情况下 直接求取 X 补 假设有 X 补 X0 X1X2 Xn X0为补码数的符号位 则有 若1 X 0 则X0 0 所以X X 补 0 X1X2 Xn 0 X 0 X1X2 Xn 0 X 补 2 0 X1X2 Xn 1 NOTX 0 00 01 NOTX0 NOTX 0 00 01其中 NOTX0是补码数的符号位X0的反 这就是说 当X大于或等于0时 已知 X 补 要求 X 补时 只需将 X 补连同符号位一起取反 再加1 加在最低位 即可 无符号数和有符号数 有符号数及其编码 补码表示法若0 X 1 则X0 1 X 补 2 X 故有 X X 补 2 1 X1X2 Xn 2 0 X1X2 Xn 1 X 1 0 X1X2 Xn 0 NOTX 0 00 01 NOTX0 NOTX 0 00 01 0 X 补 NOTX0 NOTX 0 00 01 综合以上分析 可得知 已知 X 补求 X 补的方法是 将 X 补逐位取反后 在最低位加1 X 补被称为 X 补的机器负数 无符号数和有符号数 有符号数及其编码 补码表示法在已知 X 补和 Y 补时 求 X Y 补的方法是 X Y 补 X Y 补 X 补 Y 补 X 补 Y 补这就是说 在补码情况下 减法运算可基于加法运算部件简单实现补码具有以下基本性质 性质1 0的补码是唯一的 0 补 0 00 0 0 补 1 11 1 0 00 1 0 00 0 mod2 无符号数和有符号数 有符号数及其编码 补码表示法性质2 X 补与 X 补是等价的基于性质1 有 X X 补 X 补 X 补 0 有 X 补 X 补性质3 已知 X 补求X的一般规则是 X X 补 2X0 其中X0是 X 补的数符位设 X 补 X0 X1X2 Xn若1 X 0 则 X 补 X 0 X0 0 若0 X 1 则2 X 补 2 X 1 X0 1 因此 X 补 2X0 XX X 补 2X0 X0 X1X2 Xn 2X0 0 X1X2 Xn X0 无符号数和有符号数 有符号数及其编码 补码表示法性质4 已知 X 补求 X 2 补的一般规则是 结果的数符与操作数 X 补的数符一致 结果的数值部分为操作数 X 补的数值连同符号位一起右移一位的结果由性质3可知 已知 X 补 X 0 X1X2 Xn X0因此 X 2 0 X1X2 Xn 2 X0 2 0 X1X2 Xn 2 X0 2 X0 0 X1X2 Xn X0 2 X0 0 0X1X2 Xn X0 2 X0 0 X0X1X2 Xn X0比较性质3中的X和性质4中的X 2可得 X 2 补 X0 X0X1X2 Xn 无符号数和有符号数 无符号数和有符号数 无符号数和有符号数 有符号数及其编码 模4补码 变形补码 模4补码除了模数 及与模数紧密关联的特性 与模2补码不同外 是没有什么区别的 因此 前面讲过的模2补码性质及码制之间转换均可用于模4补码可以看出 模 补码的真值范围是模 补码的一倍 假若仍表示 X 的真值 小数点左边就一定相同 基于此可以说 模4补码是有两个符号位的补码 称为变形补码由于模 补码在表示 时 两个符号位一定相同 而当两个同号数相加 且结果 或者结果 时 但仍在 之间 两个符号位就一定不相同 利用这个特点可判断定点数加减运算中的溢出应注意 在计算机中存储和传送数据时用一位符号位 而在运算时数据采用两位符号位表示 无符号数和有符号数 无符号数和有符号数 无符号数和有符号数 有符号数及其编码 反码 补码转换为原码将反码表示的数据转换成原码 转换方法 符号位保持不变 正数的数值部分不变 负数的数值部分取反例 设 X 反 0 1010 则 X 原 0 1010 X 0 1010设 X 反 1 1010 则 X 原 1 0101 X 0 0101将补码表示的数据转换成原码 转换方法 符号位保持不变 正数的数值部分不变 负数的数值部分取反后在最低位加1例 设 X 补 0 1010 则 X 原 0 1010 X 0 1010设 X 补 1 1010 则 X 原 1 0110 X 0 0110 无符号数和有符号数 有符号数及其编码 移码表示法移码的定义 如果整数X的字长为n 1位 包括1位符号位 则其移码的定义为 X 移 2n X 2n X 2n mod2n 1 2 9 例 设n 7 则有 X 移 128 X 128 X 128 mod128 此时的移码实质上是余128码 无符号数和有符号数 无符号数和有符号数 有符号数及其编码 移码表示法移码的性质 移码表示法具有下列主要性质 性质1 移码数符位的特殊性 移码的数符与原码 补码的数符相反 对于同一个数据X X 移与 X 原 X 补的数符位的值相反性质2 移码与补码的关系 对于同一个数 若将其补码表示的数符位取反 即得到其移码表示 反之亦然 即若有 X 移 Xn Xn 1Xn 2 X0 则相应地有 X 补 NOTXn Xn 1Xn 2 X0性质3 移码加减法运算需要对结果进行修正 已知两个n 1位 含1位符号位 的数X Y得移码表示分别为 X 移和 Y 移 相应地 有 X Y 移 X 移 Y 移 2n X Y 移 X 移 Y 移 2n 无符号数和有符号数 有符号数及其编码 移码表示法性质4 X 0的移码和 X 移 0 相应地 有 0的移码是唯一性的 对于n 1位移码 含1位符号位 有 0 移 2n 00 0 100 0 0 移 2n 00 0 100 0对于 X 移 0 X的值是可取的最小值 对于n 1位移码 含1位符号位 有 若 X 移 0 即2n X 0 X 2n 定点数和浮点数 数的定点表示所谓 定点数 在逻辑上讲 就是固定或约定小数点位置的数据表示方法 这样一来 小数点 就可以不再使用明确的记号给出 由此可使机器的设计简化在计算机中 通常硬件的处理策略是以 定点数 来记录整数和纯小数 这样 一个实数可被分成两个部分保存 基于这样的机器要执行实数运算可通过软件的作用来实现 软件也可约定小数点在一个确定的位置上 定点数是硬件可识别的各种数值数据类型中最简单 最基本的一种数据表示 它用以表示二进制形式具有固定比例换算的量 按小数点的位置 可分为 定点小数和定点整数 按数有无符号 可分为带符号的或不带符号的数在定点数的机器表示中 对于有符号数 通常的做法是将数符放置在最高位 对于整数和纯小数都是这样 定点数和浮点数 定点数和浮点数 数的定点表示进行算术运算时 通常使用带符号的数 一般以最左边 最高 位为符号位 数据可用原码 补码或反码表示 表示逻辑量或某些特征值时 应当使用无符号的数关于定点数 应当注意 小数点在机器中是无法表示的 是人们在编程时的一种约定对于计算机来说 符号位与其它位没有什么区别 这也只是人们的一种约定只有定点数表示的计算机称为定点计算机 定点数可由寄存器或存储单元来表示 机器指令引用的操作数只能是定点数 而其它数据类型在定点机中不能由硬件直接表示 也不能由机器指令直接引用 但并不是说定点机不能处理浮点数据 它们可以通过软件的方法将其变换为等效的定点数据表示 然后再加工处理 定点数和浮点数 数的定点表示早期计算机中 定点数的长度 位数 是固定的 一般取机器字长 参与运算的操作数长度也是固定的 通常称作 定长运算 或 定长操作 在实际使用中发现 固定字长存在明显缺点 如有的用户问题 其数据范围和精度要求只需较少的位数就可满足 但在定长数据表示中 多余的位只能填入 真值 使运算器和存储器设备的利用率降低为了克服固定长度的缺点 在现代计算机中 通常采用多种定长数据表示 对每种字长的操作仍然是定长操作 如X86系列机 有三种定长数据 8位 16位 32位 每种定长数据可以单独存储和单独运算处理 当然 这使相应计算机硬件结构比之于采用单一定长格式的机器在设计上要复杂一些 也会在一定程度上降低机器的性能价格比 定点数和浮点数 数的定点表示下面再对计算机中的定点数及其计算机内部处理的几个基础性问题作一简单讨论 这些问题是 定点数的表示范围问题 以字节数据为例 下面将对定点数的表示范围问题作一简单讨论在按字节编址的机器中 16位 32位 64位字长的地址如何确定 在现代 计算机系统的主存通常以字节作为独立编址单位 处理相关的操作数的长度通常为字节的整数倍 而机器从主存读取 或向主存写入 操作数通常是以 主存字 为单位进行的 同时 长度不同的数据可能要存放在主存的连续地址空间中采用多种字长数据表示的机器 如何确定操作数的类型 计算机内部在对数据进行自动处理时 如何知道当前处理的操作数的长度 定点数和浮点数 数的定点表示操作数类型与处理操作的相关性问题 作为机械性装置 计算机对各种数据都按统一模式进行处理 定点数的表示范围问题涉及 数据字长 整数的表示范围因数据字长的不同而不同 小数则因数据字长的不同而精度不同 数据是无符号数还是有符号数编码方法的不同将使定点数的表示范围有所不同 略有差异 字节定点数据的表示范围 真值 如下表所列类似地 可得到16位字长 32位字长 64位字长的十进制数范围和二进制数形式的表示范围 定点数和浮点数 定点数和浮点数 定点数和浮点数 数的定点表示一般地 对于16位字 要求地址A为偶数 对于32位字 要求地址A模4为0 对于64位字 要求地址A模8为0 称为按 存储字 的 边界对齐 但也有些机器中无此要求采用多种数据字长的机器 确认当前操作数的数据类型的基本原则是 总的原则是由 指令 的内容 指令的操作码部分 当把一条机器指令抽象为由 操作码 和 地址码 两部分组成时 确定当前操作数是8位 16位 32位还是64位中的哪一种数据类型 也就是说 实际上 计算机的CPU是把它们作为多条指令来识别 以 加法 指令为例 CPU认为有一条8位的加法指令 一条16位的加法指令 一条32位的加法指令和一条64位的加法指令 具体实现有下述两种策略 定点数和浮点数 数的定点表示在一些机器中 通过给出不同的 操作码 编码来区分操作数的数据类型 也就是说 针对 加法 运算 给出4个操作码分别对应于8位加法操作 16位加法操作 32位加法操作和64位加法操作在另一些机器中 在指令格式中设置相对独立的 操作数类型 字段来区分操作数的数据类型 例如 设置一个两位的 操作数类型码段 使 00 对应于8位加法 01 对应于16位加法 10 对应于32位加法 11 对应于64位加法操作数类型与处理操作的相关性问题 当机器中允许存在多种类型的数据时 并非所有的操作都适用各种不同的数据类型 通常的做法是 使某些操作适用于所有的数据类型 而某些操作只适用于其中的几种数据类型 定点数和浮点数 定点数和浮点数 定点数和浮点数 数的浮点表示若不对浮点数的表示作出进一步明确的规定 同一个浮点数的表示形式就不是唯一的 例如 电子质量 0 9 10 27 0 09 10 26 为了提高数据表示的精度 使尾数的有效数字尽可能占满已有的位数 同时也使计算机实现浮点运算时有一个统一的标准形式 人们引入了浮点数的规格化形式浮点数的规格化形式对尾数M提出了限制要求 1 R M 1 具体到等号有所不同 一般浮点数都是以规格化形式存储和运算的对于 如果M用原码表示 其表示形式为 正数0 1XXXX负数1 1XXXX如果 用补码表示 其表示形式为 正数0 1XXXX负数1 0XXXX 定点数和浮点数 数的浮点表示在进行浮点数运算时 其结果尾数的有效数字可能超过最高位 为使其规格化 需要进行右规 右规时 尾数向右移一位 阶码加1 若运算结果的尾数有效数字不在最高有效位 为使其规格化需要进行左规 左规时 尾数向左移一位 阶码减1例如 浮点运算使得尾数的结果为00 01001 此时 就要进行结果的左规 左规后 尾数变为00 1001 结果的阶码被减1 又如 浮点运算使得尾数的结果为01 1001 此时 就要进行结果的右规 右规后 尾数变为00 11001 结果的阶码被加1 浮点数的精度由尾数M的位数决定 浮点数的表示范围由R和E决定 定点数和浮点数 数的浮点表示浮点数据表示也从固定字长发展成了多种字长数据表示 按IEEE标准 常用的浮点数的格式为 符号位阶码尾数总位数短浮点数182332长浮点数1115264临时浮点数1156480对短浮点数和长浮点数 尾数不为零时 其最高一位上的 不必明确给出 称为隐藏位 对临时浮点数 不采用隐藏位方案 浮点数的表示范围 以短浮点数为例 假定R 2 其表示范围给出如下 十进制形式表示二进制形式表示 定点数和浮点数 正数负数非规格化数原码Max00111111111 111111111100 0123个122个00Min01111111100 0110111111111 122个023个1补码Max00111111111 111000000011 1123个123个10Min01000000000 0110111111100 022个023个0 定点数和浮点数 非数值数据的表示方法 数字化信息编码的概念计算机的最重要的功能是处理信息 如数值 文字 符号 语言 图形和图像等 在计算机内部 各种信息都必须采用数字化编码的形式被传送 存储和加工 因此掌握信息编码的概念与技术是至关重要的所谓编码 就是用少量简单的基本符号 选用一定的组合规则 以表示出大量复杂多样的信息 基本符号的种类和这些符号的组合规则是一切信息编码的两大要素 如用10个阿拉伯数码表示数值等 注意在编码中不能有重码当基本符号数量很多时 往往还要采取措施 以能使用更少量而简单的基本符号来表示那些量大而复杂的基本符号 这就构成了多重编码在计算机中 广泛采用的是仅用 和 两个基本符号组成的基 码 或称为二进制码 称为码制的基 非数值数据的表示方法 字符的表示方法现代计算机不仅要处理数值数据的计算问题 而且要实现对大量非数值数据的系统处理这些非数值数据包括字符 字符串 图形符号和汉字等在内 鉴于它们是基于一个确定符号集合的 且与字符 拼音字母 数字符号 标点符号等 关联密切 因此称其为 字符数据 在字符数据中 字符 是其基本元素 因此 字符的表示是字符数据计算机系统表示的基本问题在计算机中 为每一个字符指定一个确定的编码 作为识别与使用这些字符 以至由此识别各种字符数据的依据 这些编码的值 是用一定位数的基2码的两个基本符号 1 和 0 进行重编码给出的使用最多的 最普遍的是ASCII字符编码 即AmericanStandardCodeforInformationInterchange 如表2 5所示 非数值数据的表示方法 非数值数据的表示方法 字符的表示方法从表2 5可以看出 每个字符用7位基2码编码 代码的排列次序为b6b5b4b3b2b1b0 其高位部分是b6b5b4 低位部分是b3b2b1b0 在计算机内 每个字符实际用8位表示 一个字节 通常 最高位d7被置为 0 在需要奇偶校验时 这一位可用于存放奇偶校验的值 此时称这一位为校验位ASCII是128个字符组成的字符集 其中编码值0 31不对应任何可印刷 或称有字形 字符 通常称它们为控制字符 用于通信中的通信控制或对计算机设备的功能控制 编码值为32的是空格字符SP 编码值为127的是删除控制DEL码 其余的94个字符称为可印刷字符 有人把空格也计入可印刷字符 称有95个可印刷字符 非数值数据的表示方法 字符的表示方法注意 这种字符编码中有如下两个规律 字符0 9高3位编码为011 低4位为0000 1001 当去掉高3位的值时 低4位正好是二进制形式的0 9 这也符合十进制数位编码的BCD码规则 这既满足正常的排序关系 又有利于完成数字ASCII码与二进制码之间的转换英文字母的编码值满足正常的字母排序关系 且大 小写英文字母编码的对应关系相当简便 差别仅表现在b5一位的值为0或1 b5一位的值为0 表示相应的字母伟大写字母 b5一位的值为1 对应的字母为小写字母 这样 有利于大 小写字母之间的编码变换 已知一个字母的大写形式的编码 只要将其b5一位的值由0改变为1 就得到了对应的小写字母的编码 反之亦然 非数值数据的表示方法 字符串的表示随着计算机在文字处理与管理信息系统 MIS 中的广泛应用 字符串已成为最常用的数据类型之一 许多计算机中都提供字符串操作功能 一些计算机 例如 X86系列微机 还给出了系列面向字符串操作的机器指令字符串是指连续的一串字符 通常方式下 它们占用主存中连续的多个字节 每个字节存一个字符 当主存字由2个或4个字节组成时 在同一个主存字中 既有按从低位字节向高位字节的顺序存放字符串内容的 也有按从高位字节向低位字节的次序顺序存放字符串内容的这两种存放方式都是常用方式 不同的计算机可以选用其中任何一种 例如IFA BTHENREAD C 就可以有两种不同的存放方式 如下图所示 非数值数据的表示方法 字符串的表示字符串的两种存储方式 存储字的字长 32位 非数值数据的表示方法 汉字的表示方法使计算机识别汉字信息是十分必要的汉字信息计算机系统保存与处理的基础是计算机能够有效地识别汉字 汉字信息在数据类型上属于 字符数据 汉字也是通过编码使计算机得以识别的 鉴于汉字的数量很大 目前使用16位二进制码来编码一个汉字 汉字集合 每个汉字所对应的二进制代码是通过 标准化 予以规定的由于汉字的集合大 汉字又是一种象形文字 这使得汉字的输入问题不能简单处理 由此引出了汉字的 输入方法 问题 人们对之的处理策略是 引入确定的 输入方法 在输入法程序的支持下将人们的输入转换为汉字的计算机系统编码 汉字输入问题的复杂性导致了多种 输入方法 的出现 不同的输入方法对应于不同的 输入法程序 非数值数据的表示方法 非数值数据的表示方法 汉字的表示方法汉字的输入编码 目前汉字输入方案有数百种 基本上是直接利用西文键盘进行汉字输入 每一种汉字输入法都各自提供相应的键盘码与汉字机内码 略 汉字机内码 略 汉字的输出码 略 非数值数据的表示方法 逻辑数据的表示逻辑数据是用来表示二值逻辑中的 是 与 非 或称 真 与 假 两个状态的数据 很容易想到 用计算机中的基2码的两个状态 1 和 0 恰好能表示逻辑数据的两个状态 例如用 1 表示真 则 0 就表示假 请注意 这里的1和0没有了数值和大小的概念 只有逻辑上的意义 对逻辑数据只能进行逻辑运算 产生逻辑数据结果 以表达事物内部的逻辑关系 逻辑数据在计算机内可以用一位基2码表示 就是说 8个逻辑数据可以存放在1个字节中 用其中的每个bit 位 表示一个逻辑数据 非数值数据的表示方法 其他信息的表示图像的表示 略 声音的表示 略 数据校验 概述在计算机系统中 数据在存取和传递过程中可能会产生错误 为减少和避免错误 一方面是要精心设计各种电路 提高计算机硬件的可靠性 另一方面是在数据编码上找出路 即采用带有某种特殊能力的编码法 通过少量的附加电路 使之能发现某些错误 甚至能确定错误的性质和准确的出错位置 进而实现自动改错功能数据校验码就是一些具有发现某些错误或带有自动改错能力的数据编码方法 其编码分别称为检错码 能够发现某些错误的数据编码 和纠错码 不仅能够发现某些错误 而且具有确定的错误自动纠正能力的数据编码 它们的实现原理是在合法的数据编码之间 加进一些不允许出现的 非法的 编码 使合法数据编码出错时 就成为非法编码 这样就可以通过检测编码的合法性来达到发现错误 和 或自动纠正错误 的目的 数据校验 概述合理安排非法编码数量和编码规则 就可以提高发现错误的能力 甚至达到自动改正错误的目的 这里用到一个码距的概念 码距是指任意两个合法码之间至少有几个二进制位不同 仅有一位不同称其码距为1 例如用四位二进制表示16种状态 则16种编码都用到了 此时码距为1 即任何一个状态的四位码中的一位或几位出错 就变成了另一个合法码 此时无查错能力 若用四位二进制表示8个状态 就可以只用其中八种编码 而把另8种编码作为非法编码 此时可使合法码的码距为2 一般来说 合理地增大合法码的码距 就能提高发现错误的能力 但由此将会使得表示一定数量的合法码所使用的二进制位数增多 增加了数据存储的容量或数据传送的数量 硬件 常用的数据校验码是奇偶校验码 海明校验码和循环冗余校验码 CRC 数据校验 奇偶校验奇偶校验是最简单 应用最广泛且开销最小的一种校验方式奇偶校验码的实现原理是使原来合法编码码距由 增加到 实现的具体方法是为一个信息补充一个二进制位 称为奇偶校验位 用该位的值为 或 使信息和该校验位一起含有 值的个数为奇数 称为奇校验 或偶数 称为偶校验 形成奇偶校验位的值和进行校验 是由专设的硬件线路实现的 何种门电路 奇偶校验又分为垂直奇偶校验 水平奇偶校验和水平垂直奇偶校验三种垂直 纵向 奇偶校验 针对一个数据对象增设一个奇偶校验位 使得n位长的数据字被加长到n 1位 例如 用七单位ASCII码表示的数字0 9在增设一个奇偶校验位后形成的垂直奇偶校验码如表一所示 数据校验 奇偶校验 数据校验 奇偶校验水平奇偶校验 对于数据传送来说 成组传送是一种高效的数据传输方式 在数据的成组传送中 被传送的数据具有相同的数据类型 为了有效地检测数据成组传送过程中可能出现的数据错误 可以考虑针对这一组数的每一位 而不是每个数据 设置一个奇偶校验位 如果每个数据含10个二进制位 就设置10个奇偶校验位 而不管这组数据包含多少个元素 由此形成的校验方式即是 水平奇偶校验 设被传送的数据是由七位ASCII字符组成的数据组 每次传送10个数据 按照水平奇偶校验的方式形成数据的校验码基于水平奇偶校验的校验码形成方式 可设7个校验位 相应示例数据及其校验码如表二所示 数据校验 数据校验 奇偶校验水平垂直奇偶校验 同时进行水平和垂直奇偶校验的方式称为水平垂直奇偶校验水平垂直奇偶校验通常用在成组数据传送时的数据校验上 它在两个方向上对数据进行校验 对成组传送的数据的每一个数据元素按垂直奇偶校验方法形成一个校验位对各数据的同一位按水平奇偶校验方法形成一个校验位设被传送的数据是由七位ASCII字符组成的数据组 每次传送10个数据 相应校验码示于表三水平奇偶校验码和垂直奇偶校验码只能发现奇数个错 不能发现偶数个错 水平垂直奇偶校验码具有较强的检错能力 它不但能发现所有一位 二位和三位错误 而且能改正一位错误 数据校验 数据校验 海明校验码海明校验码 其实现原理是在数据中加入几个校验位 将数据代码的码距较均匀地拉大 并把数据的每一个二进制位分配在几个奇偶校验组中 当某一位出错后 就会引起有关几个奇偶校验位的值发生变化 这不但可以发现错误 还能指出是哪一位出错 为进一步自动纠错提供了依据为了简单起见 在此仅介绍能够自动纠正一位错误的海明校验码海明校验码是用r个奇偶校验位附加到具有k个二进制数位的数据上 形成一个长度为M r k 位的新代码 海明校验码 因为要校正一位错误 附加的校验位就要有指示错误出在哪一位的能力 就是说 校验位的状态应当有M 1种 含无错的情况 以便能指出n个海明码代码位中的任何一位有错或无错 数据校验 数据校验 海明校验码若海明码的最高位号为m 最低位号为1 即设相应形成的海明校验码为HmHm 1 H2H1 则其编码规则是 校验位与数据位之和为m 每个校验位Pi在海明码中被分在位号2i 1的位置 其余各位为数据位 并按从低位向高位依次排列的关系分配各数据位海明码的每一位Hi 包括数据位和校验位本身 由多个校验位校验 其关系是被校验的每一位位号要等于校验它的各校验位号之和在增大合法码的码距时 使所有码的码距尽量均匀地增大 以保证对所有码的检错能力平衡提高在下面的讨论中 我们将以一个字节数据作为被校验的数据来系统地介绍用海明校验码实现校验的全过程 问题要求被设定为 检测与自动校正一位错 并发现两位错 数据校验 海明校验码每个字节由8个二进制位组成 此处k为8 根据表2 6可知 校验位数r应为5 故海明码的位数为13 可表示为 H13H12H11H10H9H8H7H6H5H4H3H2H1五个校验位P5 P1对应的海明码位号 按2i 1的原则确定 分别为 H13 H8 H4 H2 H1由此 可得到13位的海明码组织形式为 P5D8D7D6D5P4D4D3D2P3D1P2P1注意 数据位 D8 D1 的位号根据向前的相关讨论 每个海明码的位号要等于参与校验它的几个校验位的位号之和的关系 可以相应得出如表2 6 1的结果 数据校验 数据校验 海明校验码应当注意 这里的P5与P1 P4不同 可被认为是由 海明校验 这种校验方法所确定的 由此可使相应的 码距 被拉大 相应的 校正一位错误 发现两位同时出错 的目标得以实现在这种安排下 每一数据位至少出现在3个Pi值的形成关系中当任一数码位发生变化时 必将引起3个或4个Pi值跟着变化 因此 该海明码的码距大于等于4在发送或存入数据时 相应的校验电路基于上述5个表达式根据具体的数据值产生P1 P5 连同数据值一起按照上述数位编排方式发送或存储在数据的接收方 或者数据被读出时 由对应的校验电路按照同样的方式产生校验码 若记相应产生的校验码对应地为S1 S5 则可达到检错和纠错的目的 数据校验 海明校验码在进行错误检测时 相应的关系式为 S1 P1 D1 D2 D4 D5 D7S2 P2 D1 D3 D4 D6 D7S3 P3 D2 D3 D4 D8S4 P4 D5 D6 D7 D8S5 P5 P4 P3 P2 P1 D1 D2 D3 D4 D5 D6 D7 D8 在发生一位数据错的情况下 相应地 有 S5S4S3S2S1 10011 D1错10101 D2错10110 D3 其它数据位错依此类推 无错时S5S4S3S2S1 00000若出现两位错 S5 0 不能确定错误位置 数据校验 海明校验码下面假设被校验的数据值是英文字母 C 的ASCII值 用一个字节 8位二进制 表示 以之来进一步具体化地说明海明校验的相关过程 被测数据值的二进制描述为 D8D7D6D5D4D3D2D1 01000011基于被测数据的值可得出13位海明码为 P50100P4001P31P2P1可相应求得P1 P5的值分别为 P1 D1 D2 D4 D5 D7 1P2 D1 D3 D4 D6 D7 0P3 D2 D3 D4 D8 1P4 D5 D6 D7 D8 1P5 0 数据校验 海明校验码由此可知 相应的海明码为 0010010011101设其中有一个数据位D2出错 接收到的编码为 P5D8D7D6D5P4D4D3D2P3D1P2P10010010001101此时 相应形成的S1 S5分别为 S1 P1 D1 D2 D4 D5 D7 1S2 P2 D1 D3 D4 D6 D7 0S3 P3 D2 D3 D4 D8 1S4 P4 D5 D6 D7 D8 0S5 1即有S5 S1 10101 数据校验 海明校验码由于S5 0 且S4 S1 0101 0000 使得如教材P43图2 8所示的电路产生 一位错 的指示由于有S1 1 S3 1 它们的表达是分别为 S1 P1 D1 D2 D4 D5 D7S3 P3 D2 D3 D4 D8同时出现在这两个表达式中的仅有D2和D4 但D4还出现在S2的表达式中 但S2 0 这就是说 此时的错误只可能是因D2出错引起的 或者说 由S5 S1 10101即可断言 唯一的可能是D2出错 基于前面的讨论可知 可由相应的硬件根据该值确认是D2出错 相应地将D2取反即可自动纠正该错误 数据校验 数据校验 数据校验 数据校验 循环冗余 CRC 校验为了引入CRC校验码 可将一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年考研管理类联考真题及答案解析
- 机械安全考试卷及答案
- 多媒体课件在古诗教学
- 如何评价别人的教学课件
- 废气处理药剂成本控制工艺考核试卷及答案
- 氨纶纤维纤维抗变形性能评估工艺考核试卷及答案
- 2025年呼吸内科主治医师《专业知识》备考题(附答案)
- 绒毛脱绒工艺考核试卷及答案
- 2025年河南省周口市电梯作业特种设备安全管理人员A真题及答案
- 银火法精炼炉考核试卷及答案
- 人教版初二地理上册课件:从世界看中国第一节 疆域
- 初中生叛逆期教育主题班会
- 《农村基层干部廉洁履行职责规定》知识培训
- 符合标准2025年乡村全科助理医师考试试题及答案
- 2025年矿产权评估师练习题及参考答案一套
- 人工智能技术在中职语文教学中的实践
- 中职新能源汽车专业实训虚实结合教学模式创新研究
- 2025年《新课程标准解读》标准课件
- 员工培训内容与进度记录表
- 《分娩指导及助产技巧》课件
- 图像数据采集与处理方法-洞察分析
评论
0/150
提交评论