- ベストアンサー
BCD・HEX・BINについて
設備のタッチパネルでBCD入力にて100をいれました。HEXに変換した値はいくらでしょうか?
- みんなの回答 (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 ぐらいは覚えておけば、なにかと役に立ちます。
その他の回答 (1)
- theisman
- ベストアンサー率47% (56/119)
BCDで100なら、そのまま100になると思いますが。 単に100(DEC)をHEXに直すなら、64(HEX)になります。
補足
おっしゃるとおりですが、変換するときの式はどのようになるのでしょうか?BCDからの10進・16進への変換、10進から16進orBCDへの変換など・・・。16進数は0~F、BCDは2進数を0~9であらわしている。だいたい基本的なことはわかるのですが、データ形式の変換方法がいまいち理解できていないのです・・。