計算機的重點編碼方式


編碼的概念

  • 用若干位碼元按一定規律排序起來表示給定信息的過程稱之為編碼

    • 直觀理解: 使用一組數組合來代表一種信息叫做編碼

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碼

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

    • Gray碼轉二進制數

\[\begin{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為負
  • 其余各位為數值

  • 代碼位數稱為字長,其數值稱為真值(類似數學上的絕對值)

\[\begin{equation} \left\{ \begin{array}{lr} 原碼: 符號位+數值位 & \\ \\ 反碼: 正數和原碼一樣;負數符號位為1,數值按位取反 \\ \\ 原碼: 正數與0和原碼一樣,負數符號位為1,數值"取反加1" & \end{array} \right. \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

  • 或者也可以使用公式求補碼:

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

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

      \[\begin{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 \]

  • 補碼 > 原碼方法

    \[\begin{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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM