• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

てぇかむ#低燃費化のブログ一覧

2011年10月21日 イイね!

覚え書き : 2進数 ⇒ BCD変換について @ トリップ メーターを作るのに必要

覚え書き : 2進数 ⇒ BCD変換について @ トリップ メーターを作るのに必要人間が数を数えたりするには、10進数を使っている。

これは、0~9(10種類の文字を使う)まで数えると、次の桁に行く(桁上がりする)ので 10進数。
 ⇒ 9 の次は、桁上がりして、10 (10進数で表現)

--------
これが、マイコン(コンピューター)の中では、基本的には 2進数を使う。

これは、0~1(2種類の文字を使う)まで数えると、すぐに次の桁に行く(桁上がりする)ので 2進数。
 ⇒ 1 の次は、桁上がりして、10 (2進数で表現。 10進数で表現すると、"2" のこと。)

-------- --------

今、自分で液晶表示の トリップ メーターを作ろうとしているが、
C言語とかBASIC言語みたいな 「高級言語」 を使っていないので、
プログラム(アセンブリ言語)内では 2進数で数えている。

これを、(10進数を使っている人間が見る)液晶画面 に表示しなければならない。

その時に使うのが、今回調べた 「2進数 ⇒ BCD 変換」。

 BCD :  英語で、<Binary Coded Decimal>。

      日本語で、<2進化 10進表現>。 
       「2進数だけど、(各桁は)10進数を表現してるよ~」 ってところか??

 >BCD変換ルーチンについて | Leitz_House Top Page
 > http://www.geocities.jp/leitz_house/
 > http://www.geocities.jp/leitz_house/electronics/pic/bcd_01.htm

-------- --------

2回くらい読んだけど、何か騙されているみたいで・・・
いまいちピンと来ない・・・ので、書いてみた。

-------- --------

試しに、123 (10進表現。いわゆる 「ひゃく にじゅう さん」 ) をBCD変換してみることにした。

> BCD部分の各桁について、「値が5以上ならば3を加算する」
> BCD部分に3を加算しても、4bit目(8)が0である場合は、3を減算して元に戻し、次のステップに進みます。

> ・BCD部 変換、は 「BCD部分の各桁(2進表現なので4桁分)について、値が 5以上ならば 3を加算する」 の意味。

> ・左にシフトは、2進数では 2倍の意味になります。


10進数 : 123
16進数 : 0x7B
2進数 : 0111 1011b ← [BIN] の所に入れる

[   BCD   ]  [     BIN     ]
百位 十位 一位  b7 6 5 4 3 2 1 b0
0000 0000 0000  0 1 1 1 1 0 1 1     元の数

0000 0000 0000  0 1 1 1 1 0 1 1     1st-1 (BCD部 変換) ⇒ 何も起きない
0000 0000 0000  1 1 1 1 0 1 1 o     1st-2 (左にシフト)
0000 0000 0000  1 1 1 1 0 1 1 o     2nd-1 (BCD部 変換) ⇒ 何も起きない
0000 0000 0001  1 1 1 0 1 1 o o     2nd-2 (左にシフト)

0000 0000 0001  1 1 1 0 1 1 o o     3rd-1 (BCD部 変換) ⇒ 何も起きない
0000 0000 0011  1 1 0 1 1 o o o     3rd-2 (左にシフト)
0000 0000 0011  1 1 0 1 1 o o o     4rd-1 (BCD部 変換) ⇒ 何も起きない
0000 0000 0111  1 0 1 1 o o o o     4th-2 (左にシフト)

0000 0000 1010  1 0 1 1 o o o o     5th-1 (BCD部 変換) ⇒ BCD部の一の位が変化
0000 0001 0101  0 1 1 o o o o o     5th-2 (左にシフト)
0000 0001 1000  0 1 1 o o o o o     6th-1 (BCD部 変換) ⇒ BCD部の一の位が変化
0000 0011 0000  1 1 o o o o o o     6th-2 (左にシフト)

0000 0011 0000  1 1 o o o o o o     7th-1 (BCD部 変換) ⇒ 何も起きない
0000 0110 0001  1 o o o o o o o     7th-2 (左にシフト)
0000 1001 0001  1 o o o o o o o     8th-1 (BCD部 変換) ⇒ BCD部の十の位が変化
0001 0010 0011  o o o o o o o o     8th-2 (左にシフト)

-------- --------
結果、BCD部は [ 0001 0010 0011 ] になった。

 百の位 : 0001b (2進表現) → 1 (10進表現)
 十の位 : 0010b (2進表現) → 2 (10進表現)
 一の位 : 0011b (2進表現) → 3 (10進表現)

百の位 : 1 、十の位 : 2 、一の位 : 3 、って事で
BCD手動変換したら 123 が出た。

すげ~(^o^)/


>このように、2進部分が256倍されて、かつ10進形式に変換されて、BCD部分のレジスタに収まることになります。
>2進部分の桁数が増えても、繰り返しの回数が増えるだけで、まったく同じような作業で処理できます。

>数学も含めた人類の英知全てが技術に生きているのを感じますね(^ ^;


一番最初にコレを使ったのが、1960年、IBMの
「IBM 1410」 という中型ビジネスコンピュータだそうな。

IBM、すげー。

 >二進化十進表現 - Wikipedia
 > http://ja.wikipedia.org/wiki/%E4%BA%8C%E9%80%B2%E5%8C%96%E5%8D%81%E9%80%B2%E8%A1%A8%E7%8F%BE

(写真引用元)
 >The IBM 1401 | ClomBers
 > http://www.columbia.edu/cu/computinghistory/1401.html
Posted at 2011/10/21 21:22:22 | コメント(1) | トラックバック(0) | 電子工作 / Digi-Trip 関連 | クルマ

プロフィール

買ってから早23年、未だにビート好き。 R5/02に再び公道復帰。 末尾に何某かが付いて、てぇかむ工房だったり、 てぇかむ技研工房だったり、てぇかむ危...

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

<< 2011/10 >>

      1
2 3 456 78
9 10 11 1213 1415
1617 181920 21 22
2324 25 26 2728 29
3031     

ブログカテゴリー

リンク・クリップ

ASTRO PRODUCTS 充電式プラスチックリペア 
カテゴリ:その他(カテゴリ未設定)
2025/08/12 08:30:31
ヤフオク タイヤチェンジャー 手動 倍力レンチ 
カテゴリ:その他(カテゴリ未設定)
2025/08/12 08:29:14
ビートECU化② 
カテゴリ:その他(カテゴリ未設定)
2025/08/11 23:59:14

愛車一覧

ホンダ ビート ゆるスポ アクティ コンバーチブル (Lv.33) (ホンダ ビート)
農道を走るビート。 ヒトの背中を後ろから押すクルマ。:-) S660 →『ガチスポ』に ...
ホンダ エディックス エディックス mhd (Lv.20) (ホンダ エディックス)
横3席×前後2列の6座独立シートで、 合計6人(前3人、後3人)乗れる どマイナーな車で ...
その他 トレーラー 高速走行用リヤカー(シーマリン オートバイトレーラー) (その他 トレーラー)
高速道を走れる『リヤカー』:-) (ライトトレーラー) "車検証"上での「車体の形 ...
ホンダ モンキー NS-Monkey “NSZ-63JZ” (ホンダ モンキー)
車体が40年モノ。(元エンジンはスーパーカブ70のセル付きが載っていた) エンジンは3 ...
ヘルプ利用規約サイトマップ
© LY Corporation