バイナリからBCDコードへの変換
BCD コードはデジタル回路において重要な役割を果たします。 BCD は、Binary Coded Decimal Number の略です。 BCD コードでは、10 進数の各桁が同等の 2 進数として表されます。したがって、10 進数の LSB と MSB は 2 進数として表されます。 2 進数を BCD に変換するには、次の手順があります。
- まず、2進数を10進数に変換します。
- 10進数をBCDに変換してみます。
2 進数を BCD に変換するプロセスを理解するための例を見てみましょう
例 1: (11110) 2
1. まず、指定された 2 進数を 10 進数に変換します。
2 進数: (11110) 2
数値に相当する 10 進数を検索する:
| ステップ | 2進数 | 10進数 |
|---|---|---|
| 1) | (11110) 2 | ((1×2 4 ) + (1 × 2 3 ) + (1 × 2 2 ) + (1 × 2 1 ) + (0 × 2 0 )) 10 |
| 2) | (11110) 2 | (16 + 8 + 4 + 2 + 0) 10 |
| 3) | (11110) 2 | (30) 10 |
2進数の10進数(11110) 2 は (30) 10
2. 次に、10 進数を BCD に変換します。
10 進数の各桁を 4 ビットの 2 進数のグループに変換します。
| ステップ | 10 進数 | 変換 |
|---|---|---|
| ステップ1 | 30 10 | (0011) 2 (0000) 2 |
| ステップ2 | 30 10 | (00110000) BCD |
結果:
(11110) 2 = (00110000) BCD
以下は、10 進数と 2 進数の BCD コードを含む表です。
| バイナリコード | 10 進数 | BCDコード |
|---|---|---|
| あいうえお | B 4 :B 3 B 2 B 1 B 0 | |
| 0 0 0 0 | 0 | 0 : 0 0 0 0 |
| 0 0 0 1 | 1 | 0 : 0 0 0 1 |
| 0 0 1 0 | 2 | 0 : 0 0 1 0 |
| 0 0 1 1 | 3 | 0 : 0 0 1 1 |
| 0 1 0 0 | 4 | 0 : 0 1 0 0 |
| 0 1 0 1 | 5 | 0 : 0 1 0 1 |
| 0 1 1 0 | 6 | 0 : 0 1 1 0 |
| 0 1 1 1 | 7 | 0 : 0 1 1 1 |
| 1 0 0 0 | 8 | 0 : 1 0 0 0 |
| 1 0 0 1 | 9 | 0 : 1 0 0 1 |
| 1 0 1 0 | 10 | 10000 |
| 1 0 1 1 | 十一 | 1 : 0 0 0 1 |
| 1 1 0 0 | 12 | 1 : 0 0 1 0 |
| 1 1 0 1 | 13 | 1 : 0 0 1 1 |
| 1 1 1 0 | 14 | 1 : 0 1 0 0 |
| 1 1 1 1 | 15 | 1 : 0 1 0 1 |
上の表では、10 進数の最上位ビットはビット B4 で表され、最下位ビットは B3、B2、B1、および B0 で表されます。上の表から、BCD コードのさまざまなビットに対する SOP 関数を次のように表現できます。
上記の SOP 関数の K マップは次のとおりです。
BCD からバイナリへの変換
BCD コードをバイナリに変換するプロセスは、バイナリ コードを BCD に変換するプロセスの逆です。 BCD コードをバイナリに変換するには、次の手順があります。
最初のステップでは、次のように変換します。 4 ビットのグループを作成し、各グループに相当する 10 進数を見つけることにより、BCD 数値を 10 進数に変換します。
最後のステップで、次のように変換します。 10 進数を 2 進数に変換するプロセスを使用して、10 進数を 2 進数に変換します。
例 1: (00101000) BCD
1) BCD を 10 進数に変換する
4 桁のグループを作成し、次のように同等の 10 進数を見つけます。
| ステップ | BCD番号 | 変換 |
|---|---|---|
| ステップ1 | (00101000) BCD | (0010) 2 (1000) 2 |
| ステップ2 | (00101000) BCD | (2) 10 (8) 10 |
| ステップ3 | (00101000) BCD | (28) 10 |
指定された BCD コードの 10 進数は次のとおりです: (28) 10
2. 10 進数を 2 進数に変換する
次のように、long 除算法を使用して 10 進数を 2 進数に変換します。
| ステップ | 手術 | 結果 | 残り |
|---|---|---|---|
| 1. | 2月28日 | 14 | 0 |
| 2. | 2月14日 | 7 | 0 |
| 3. | 7/2 | 3 | 1 |
| 4. | 3/2 | 1 | 1 |
| 5. | 1/2 | 0 | 1 |
残りを逆の順序で並べます。したがって、2 進数の LSB は最初の剰余であり、2 進数の MSB は最後の剰余です。
10進数の2進数(18) 10 は: (11100) 2
結果:
(00101000) BCD = (11100) 2