• 计算机的重点编码方式


    编码的概念

    • 用若干位码元按一定规律排序起来表示给定信息的过程称之为编码

      • 直观理解: 使用一组数组合来代表一种信息叫做编码

    BCD码(二 > 十进制编码)

    概念

    • 用4位二进制数码表示一位十进制数0~9十个状态时,这些代码成为二 > 十进制代码, 简称BCD(Binary Coded Decimal)
    • BCD码需要4位二进制码元,4位二进制码有2^4 =16种组合, 但只用其中10种组合表示十进制数0~9.

    编码类型

    • BCD码表

      十进制 8421码 5421码 2421码 余3码 Gray码
      0 0000 0000 0000 0011 0000
      1 0001 0001 0001 0100 0001
      2 0010 0010 0010 0101 0011
      3 0011 0011 0011 0110 0010
      4 0100 0100 0100 0111 0110
      5 0101 1000 1011 1000 0111
      6 0110 1001 1100 1001 0101
      7 0111 1010 1101 1010 0100
      8 1000 1011 1110 1011 1100
      9 1001 1100 1111 1100 1000
    • 8421BCD码:

      • 有权BCD码: 从左向右每一位的1分别代表8, 4, 2, 1.
    • 5421BCD码

      • 有权BCD码,与8421BCD码类似, 但加权方法不唯一.
    • 2421BCD码

      • 有权BCD码,但加权方法不唯一, 0-9, 1-8, 2-7, ... 4-5互为反码, 自补代码.

      • 镜像互补特性

        十进制数 镜像对比二进制数 镜像对比二进制数 十进制数
        0 0000 1111 9
        1 0001 1110 8
        2 0010 1101 7
        3 0011 1100 6
        4 0100 1011 5
    • 余3码

      • 余3码的数值比表示的十进制数(8421码)多3, 0-9, 1-8, 2-7... 4-5互为反码,自补代码。

      • 镜像互补特性

        十进制数 镜像对比二进制数 镜像对比二进制数 十进制数
        0 0011 1100 9
        1 0100 1011 8
        2 0101 1010 7
        3 0110 1001 6
        4 0111 1000 5

    可靠性编码

    Gary(格雷)码

    • 格雷码规律

    Gray码的特性

    • 反射性: 按对称轴方向,高位互补反射,低位镜像对称。
    • 单位距离性: 任何相邻的两组代码仅有一位数码不同。
    • 循环性: Gray表示的最大数和最小数之间也由单位距离性。

    Gray码为什么安全?

    • Gary码在变化小,安全度则相对提高.

    Gray与二进制数互转

    • 设有n位二进制数:

    [B_{n-1}B_{n-2}...B_0 ]

    • 和n位Gray码:

      [G_{n-1}G_{n-2}...G_0 ]

      • 二进制数转Gray码

        [egin{align} G_{n-1} =& B_{n-1} \ G_i =& B_{i+1} oplus B_i(i = 0, 1,2....n-2) end{align} ]

      • Gray码转二进制数

    [egin{align} B_{n-1} =& G_{n-1} \ B_i =& B_{i+1} oplus G_i(i = 0, 1, 2...n-2) end{align} ]

    快速写出少数格雷码

    • 利用Gray码的对称性(缺少一张动图)

    奇偶校验码

    • 奇偶校验码表

      十进制数 8421BCD 奇校验 8421BCD 偶校验
      0 0000 1 0000 0
      1 0001 0 0001 1
      2 0010 0 0010 1
      3 0011 1 0011 0
      4 0100 0 0100 1
      5 0101 1 0101 0
      6 0110 1 0110 0
      7 0111 0 0111 1
      8 1000 0 1000 1
      9 1001 1 1001 0
      位意义 信 息 位 校验位 信 息 位 校验位
    • 奇校验:使得一组代码中信息位和校验位中“1”的个数之和为奇数.

    • 偶校验:使得一组代码中信息位和校验位中“1”的个数之和为偶数.

    奇偶校验注意事项

    • 奇偶校验只能提高安全度,并不能保证一定安全.
    • 假设发送了0001但出错接收到的是0111, 奇校验依然是1,但错了两位.

    字符编码(ASCII 码)

    带符号数的编码

    • 数字系统表示正负数(二进制)的一般(定点)方法

      • 最高位作为符号位,0为正、1为负
    • 其余各位为数值

    • 代码位数称为字长,其数值称为真值(类似数学上的绝对值)

    [egin{equation} left{ egin{array}{lr} 原码: 符号位+数值位 & \ \ 反码: 正数和原码一样;负数符号位为1,数值按位取反 \ \ 原码: 正数与0和原码一样,负数符号位为1,数值"取反加1" & end{array} ight. end{equation} ]

    原码

    • 符号位 + 数值位

    • 例如:

      [N = (+54)_{10} = (+110110)_2 qquad [N]_原 = 00110110 \ N = (-54)_{10} = (-110110)_2 qquad [N]_原 = 10110110 ]

    反码

    • 正数反码和原码一样; 负数符号位为, 数值按位取反

      [N=(+42)_{10} =(+101010)_2 qquad [N]_原 =00101010 [N]_反 =00101010 \ N=(-42)_{10} =(-101010)_2 qquad [N]_原 =10101010 [N]_反 =11010101 ]

    补码

    • 正数补码和原码一样, 负数符号位为1,数值取反码加1

    • 或者也可以使用公式求补码:

      [egin{equation} [N]_{补}=left{ egin{aligned} & N & 0 le N le 2^{n-1} \ & 2^n + N & -2^{n-1} le N < 0 end{aligned} quad (mod 2^n) ight. end{equation} ]

      • 例如求6的二进制(8位), 那么带入公式. 高位溢出, 保留8位.

        [egin{align} n = 8 N = 6 \ 2^n + N = 2^8 + 6 =& 262 \ (262)_{10} =& (100000110)_2 \ =& (00000110)_2 end{align} ]

    • 例如(+6)10, (-5)10的4位和8位二进制补码

      位数/数值 原码 补码
      4位 +6 0110 0110
      -5 1101 1011
      8位 +6 00000110 00000110
      -5 10000101 11111011
      • 注意无效位的扩展:11111011

      • 也可以计算为:

        [2^8+(-5)=251=(11111011)_2 ]

    • 补码 > 原码方法

      [egin{align} 方法1:quad & {{[X]_补}}_补 = [X]_原 \ 方法2:quad & 减一取反 end{align} ]

    • 例如4位长补码0011, 1011, 1000, 求出对应十进制数

      补码 原码 十进制数
      0011 0011 +3
      1011 1101 -5
      1000 -8
    • 补码和原码/反码表示的数值范围不同(补码无-0)

      4位 8位 n位
      原码 -7 ~ +7 -127 ~ +127 -(2^n-1) ~ +(2^n-1 - 1)
      反码 -7 ~ +7 -127 ~ +127 -(2^n-1) ~ +(2^n-1 - 1)
      补码 -8 ~ +7 -128 ~ +127 -(2^n-1) ~ +(2^n-1 - 1)
    • 补码更适合带符号二进制数的计算

      • 计算机使用补码可以把减法当加法算, 如: A-B = A+(-B)对于补码而言是成立的
    • 用4位二进制计算补码加法计算(6-3)和(5+6)

  • 相关阅读:
    常用类练习题(用字符串常用类判断输入的一段话是否为回文)
    面向对象综合练习题(动物乐园)
    多态练习题(通过UML建模语言来实现饲养员喂养动物)
    UML建模语言使用的概述
    多态练习题(员工使用不同的交通工具回家)
    多态练习题(宠物医院治疗小动物的问题 ,多态的应用:向上类型传递)
    接口练习题(书信接口)
    接口练习题(实现接口功能拓展的两种方法)
    Oracle rman 各种恢复
    Oracle rman 全备份的一个小例子
  • 原文地址:https://www.cnblogs.com/ieeqc/p/14460209.html
Copyright © 2020-2023  润新知