プロが教える店舗&オフィスのセキュリティ対策術

10進数から2進化10進数(BCD)に変換するところで疑問があります。
たとえば、10進数の3846をBCDに変換する場合答えはどのようになりますか?

私なりに考えたところまでを示しますが、答えがわかりません。
どこに考え方の間違いがあるのでしょうか?

まず、3846を2進数に変換しました。
3846 → 0000111100000110 (2進数)となります。

ここからBCDに変換する場合、4ビットずつを1つと考えて数字を表現するので、上記の2進数の頭から4つずつ分けて考えると

1つ目 0000
2つ目 1111
3つ目 0000
4つ目 0110
の4つにわけました。

続いて、それぞれを10進化しました。
1つ目 0000 → 0
2つ目 1111 → 15
3つ目 0000 → 0
4つ目 0110 → 6

ここで疑問が出てきます。
2つ目のところで、1111を10進化すると15となってしまい桁上りが生じます。
この場合どのように処理するのが良いのでしょうか?

どなたかご教授ください。

A 回答 (3件)

BCDに変換する際、数値全体を2進数に変換する必要はありません。


各桁を構成している数値を2進数に変換して、合体させればよいです。
10進数の3846をBCDに変換するのであれば、
3 → 0011
8 → 1000
4 → 0100
6 → 0110
より、
0011 1000 0100 0110
です。
    • good
    • 25
この回答へのお礼

2進数に変換せずにそのままでOKだったんですね。
理解しました。ありがとうございます。

お礼日時:2014/11/27 18:08

追記。



桁数が最初から判っているなら(変換する桁数が固定なのであれば)

3846を1000で割った商を10で割った余り⇒3⇒0011

3846を100で割った商を10で割った余り⇒8⇒1000

3846を10で割った商を10で割った余り⇒4⇒0100

3846を1で割った商を10で割った余り⇒6⇒0110

と言うように、先頭から求めていく事も出来ます。
    • good
    • 9
この回答へのお礼

わかりやすい回答ありがとうございます。
理解できました!

お礼日時:2014/11/27 18:06

>たとえば、10進数の3846をBCDに変換する場合答えはどのようになりますか?



3846を10で割った余り「6」を求め、2進数にする。

6⇒0110

3846を10で割って「384」にする。小数点以下切り捨て。

384を10で割った余り「4」を求め、2進数にする。

4⇒0100

384を10で割って「38」にする。小数点以下切り捨て。

38を10で割った余り「8」を求め、2進数にする。

8⇒1000

38を10で割って「3」にする。小数点以下切り捨て。

3を10で割った余り「3」を求め、2進数にする。

3⇒0011

4桁分変換したので、終了。

最後から逆に順番に並べると

0011 1000 0100 0110

と言う16ビットになる。
    • good
    • 5

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています