- 締切済み
16進小数の基数変換
16進小数2A.4Cと等しいものはどれか。 答えは、2^5+2^3+2^1+2^-2+2^-5+2^-6なのですが、Cの部分だけうまく計算できません。 [自分の計算の仕方] 2 -> 16*2 < 2^5 こんな流れでやっているのですが、これよりも効率的な解き方ありますか? 回答お待ちしております。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
>12/256を2^aという形にできないのです。 まず、分子の「12」を「8、4、2、1」に分解します。 12=8+4ですから、8と4に分解します。 12/256=8/256+4/256 次に、それぞれを約分します。 8/256=4/128=2/64=1/32 4/256=2/128=1/64 32は「2の5乗」です。 64は「2の6乗」です。 32(2の5乗)の逆数の「1/32」は、乗数「5」をマイナスの「-5」にした物になります。 64(2の6乗)の逆数の「1/64」は、乗数「6」をマイナスの「-6」にした物になります。 32=2^5、1/32=2^-5 64=2^6、1/64=2^-6 なので 12/256=8/256+4/256=1/32+1/64=2^-5+2^-6 となります。 なお「12/256のように、10進数にしてしまうのが間違い」なので「10進数にしないで考える」ようにしないと、効率的に解く事は出来ません。 効率的に解きたいなら「Cを12にしないで1100にする」のを身に付けましょう。 12とか256とかが出てきた段階で、効率的に解く事は出来なくなります。
- yama1718
- ベストアンサー率41% (670/1618)
16進数の 2A.4C を2進数に変換する 0010 1010 . 0100 1100 小数点から左に向かって整数部分の各桁が1の部分の値を 2^n で計算します。 2^1 = 2 2^3 = 8 2^5 = 32 計42 小数点から右に向かって少数部分の各桁が1の部分の値を 2^-n で計算します。 2^-2 =0.25 2^-5 =0.03125 2^-6 =0.015625 計 0.296875 整数部と合わせて 42.296875 ですね >これを十進数になおし、… 上の説明のように16進数から2進数に変換したら、直接 2^n の式に変換します。 ちなみに べき乗の^記号ですが計算する物によっては、必ずしもべき乗とは限りません。 例えばC言語では^はXOR(排他的論理和)の演算子なので、 2^5=32とならずに、XORのビット演算をして11(B)と計算されるので注意が必要です。
- yama1718
- ベストアンサー率41% (670/1618)
訂正と補足します。 前の回答で私が書き込んだ >後ろの部分の桁がズレているのではないですか? は私の勘違いです、無視して下さい。 それで、小数部の計算は分数でと言うのが私のアドバイスです。 マイナスのべき乗なんて理解しにくいでしょう。 16進数から2進数への変換はパターンを覚える事 昔は指を折り曲げて二進数で数える事をしました。 http://tano2chan.doorblog.jp/archives/2590737.html 折り曲げた指を1とする方法と、伸ばした指を1とする二通りありますが、 親指から薬指までの4本指で0~F(15)まで数えれます。
- yama1718
- ベストアンサー率41% (670/1618)
訂正と補足します。 前の回答で私が書き込んだ >後ろの部分の桁がズレているのではないですか? は私の勘違いです、無視して下さい。 それで、小数部の計算は分数でと言うのが私のアドバイスです。 マイナスのべき乗なんて理解しにくいでしょう。 16進数から2進数への変換はパターンを覚える事 昔は指を折り曲げて二進数で数える事をしました。 http://tano2chan.doorblog.jp/archives/2590737.html 折り曲げた指を1とする方法と、伸ばした指を1とする二通りありますが、 親指から薬指までの4本指で0~F(15)まで数えれます。
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
追記。 >効率的な解き方ありますか? 効率的に解くカギは「10進数で考えない」です。 式の中に「2^5」とかが出てきても「それが10進数でいくつなんだろう」ってのは考えちゃいけません。 「2^5」ってのが出てきても「2^5のまま置いとく」のです。 そうすれば、先ほどの当方の回答の通り「機械的な作業のみ」で「2^5+2^3+2^1+2^-2+2^-5+2^-6」と言う式に辿り着く事が出来ます。
- yama1718
- ベストアンサー率41% (670/1618)
後ろの部分の桁がズレているのではないですか? 16進数の 2A.4C を2進数に変換する 0010 1010 . 0100 1100 二進数では1の桁は1で、その上の桁は2、4、8、16と倍々の値になっていく 二進数の少数派第一位は1/2で、その下の桁は1/4、1/8、1/16と半分ずづ小さくなる 二進数で1になっている桁の値を全部合計する 32+8+2 + (1/4)+(1/32)+(1/64)=42.296875 2^5+2^3+2^1 … でも計算結果は同じだけど、この方が考え方は簡単ですね。
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19867)
>16進小数2A.4Cと等しいものはどれか。 > 答えは、2^5+2^3+2^1+2^-2+2^-5+2^-6 まず、1桁づつ、4桁の2進数にします。 2A.4C ↓ 2=>0010 A=>1010 ・ 4=>0100 C=>1100 次に、0とかを省かず、そのまま並べます。 2=>0010 A=>1010 ・ 4=>0100 C=>1100 ↓ 0010 1010 . 0100 1100 次に、小数点の左側を「?×2^n」に、右側を「?×2^-n」にして、式にします。「?」は、2進数にした時の「0」か「1」のどちらかです。 0010 1010 . 0100 1100 ↓ 0×2^7+0×2^6+1×2^5+0×2^4 + 1×2^3+0×2^2+1×2^1+0×2^0 + 0×2^-1+1×2^-2+0×2^-3+0×2^-4 + 1×2^-5+1×2^-6+0×2^-7+0×2^-7 次に、「0×2^n」や「0×2^-n」など、「0×何か」になっている部分を削ります。「0×何か」は「0」なので、足す必要はありません。 0×2^7+0×2^6+1×2^5+0×2^4 + 1×2^3+0×2^2+1×2^1+0×2^0 + 0×2^-1+1×2^-2+0×2^-3+0×2^-4 + 1×2^-5+1×2^-6+0×2^-7+0×2^-7 ↓ 1×2^5+1×2^3+1×2^1+1×2^-2+1×2^-5+1×2^-6 最後に「1×」を削ります。「何かに1を掛けても値は変わらない」ので「1×」を削っても式の値は変わりません。 1×2^5+1×2^3+1×2^1+1×2^-2+1×2^-5+1×2^-6 ↓ 2^5+2^3+2^1+2^-2+2^-5+2^-6 答え:2^5+2^3+2^1+2^-2+2^-5+2^-6 >こんな流れでやっているのですが、これよりも効率的な解き方ありますか? 0=>0000 1=>0001 2=>0010 3=>0011 4=>0100 5=>0101 6=>0110 7=>0111 8=>1000 9=>1001 A=>1010 B=>1011 C=>1100 D=>1101 E=>1110 F=>1111 の16通りのビットパターンを全部暗記する。 暗記して「16進→2進」の変換が簡単に出来るようになれば、あとは「思考する必要がない単純作業」で式に変換できます。
- Tacosan
- ベストアンサー率23% (3656/15482)
「効率的な解き方」は問題によりけりだけど, その問題がこれでは全くわからんので考えようもない. ついでにいうとその「計算の仕方」でなにをしているのかさっぱり分からない. 「16*2 < 2^5」は「16*2 が 2^5 より小さい」って意味だよね?
補足
回答どうもありがとうございます。 Cは二進数で1100ですよね。 これを十進数になおし、2^aのような形にする作業なのですが、どうしてもCが2^-5+2^-6になってくれないのです。 12/256を2^aという形にできないのです。 分かりにくいかと思いますが、よろしくお願いします。