アプリ版:「スタンプのみでお礼する」機能のリリースについて

設備のタッチパネルでBCD入力にて100をいれました。HEXに変換した値はいくらでしょうか?

A 回答 (2件)

まず、2進と16進の表現方法はお分かりですね。

乱暴な言い方をすれば、この2つは同じです。2進を4桁ずつ区切ったものが16進です。

さて、BCDですが、2進を4桁ずつ区切るまでは16進と同じですが、16進のAからFまでを使わない方法になります。つまり、9(=1001)に1を足した時、2進・16進の時は 1010 = A になりますが、BCD表現だと10000になります。2進数の考え方だと、1001の次が10000になりますので連続しないことになりますが、2進を下位から4桁ずつ区切ると、9の次が10と表現されるので、10進数だと思えば連続しているように見えます。

そこで、BCDで100を表現しようとすれば、1桁ずつ'1', '0', '0' をそれぞれ2進4桁で表現して、'0001' '0000' '0000' として、これを並べて 0001 0000 0000 がBCD表現となります。これを16進表現しても、4桁ずつ区切るわけですから"100"になります。

一方、10進数の100をを16進数で表現する場合、100 = 4 + 16×6 となりますから、16進数で64、2進数では 0110 0100 になります。つまり、10進数Xを16進表現するには、
X = k<0> + 16^1 × k<1> + 16^2 × k<2> + … + 16^n × k<n>
( 0 ≦ k<0>, k<1>, k<2>, … , k<n> ≦ 15 )
という k<0>…k<n> を見つけて、k<n>から並べていけばいいのです。具体的な計算方法は、Xを超えない16^nを見つけてXをそれで割ると商がk<n>になります。次にその割り算の余りを16^(n-1)で割ると商がk<n-1>、さらにその余りを16^(n-2)で割った商がk<n-2>、・・・と繰り返して、最後は16で割った商がk<1>余りがk<0>となります。

16^2 = 2^8 = 256, 16^3 = 2^12 = 4096, 16^4 = 2^16 = 65536

ぐらいは覚えておけば、なにかと役に立ちます。
    • good
    • 2

BCDで100なら、そのまま100になると思いますが。



単に100(DEC)をHEXに直すなら、64(HEX)になります。

この回答への補足

おっしゃるとおりですが、変換するときの式はどのようになるのでしょうか?BCDからの10進・16進への変換、10進から16進orBCDへの変換など・・・。16進数は0~F、BCDは2進数を0~9であらわしている。だいたい基本的なことはわかるのですが、データ形式の変換方法がいまいち理解できていないのです・・。

補足日時:2005/06/19 22:22
    • good
    • 1

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