小数表現
◆0.375の10進数を2進数に変換
ポイント・・・・・小数部がなくなるまで2をかける
0.375×2=0.75 ・・・・・・・・0(整数部の値)↓
0.75×2=1.5
・・・・・・・・1 ↓
0.5×2=1.0 ・・・・・・・・1 ↓
↑
注目 小数部0になりました
ここでかけるのは終わり
*ここで2をかけるのが永遠の続くことを無限小数といいます。
0.011
となります。
◆次ぎに0.011の2進数を10進数に変換
0×2^-1+1×2^-2+1×2^-3
= 0×1/2+1×1/4+1×1/8
= 0+0.25+0.125
= 0.375
つまり
0 . 0 1 1
× ↑ ↑ ↑
+ 1/2 1/4 1/8
ということです。
◆同じように0.375の10進数を16進数に変換
0.375×16=6
ということは
0.6(16)
それでは0.6の16進数を10進数に変換
0.6
↑
1/16をかけるから
6×1/16=0.375(10)
0..375(10)←→0.6(16)
が検証されました。
基数変換も見ていた方がいいですよ。
★★★宿題:二種向け★(2000/1/21)
次の10進小数のうち,2進数で表すと無限小数になるものはどれか。
ア 0.05
イ 0.125
ウ 0.375
エ 0.5
■解答■(宿題メールより)
二種午前平成11年秋問1
ア 0.05
>「合格情報処理」12月号の38ページを参照しました。
どうもありがとうございました。
>
これを覚えるのには、やはり地道に計算を繰り返して覚えていく方法しかな
> いのでしょうか?
先ず分数にして,2の累乗のみの数字で構成されていたら,有限小数になります。
アの場合,0.05 = 1/20 = 1/(4×5) ですので,5
が邪魔をします。
> ア:0.05=1/20→分母を2の乗数で表わすことが出来ません。
> イ:0.125=1/8=(0.001)2
> ウ:0.375=3/8=2/8+1/8=1/4+1/8=(0.011)2
> エ:0.5=1/2=(0.1)2
どうもありがとうございました。
>
これぐらいの桁なら、0.5 0.25 0.125 を引いてみて、
> 消去法でいきます。
どうもありがとうございました。
> ア 0.05
>
> 0.05に2をかけていく。
>
> 0.05X2=0.1 −−− 0(1の位の数字を拾う)
> 0.1X2 =0.2 −−− 0
> 0.2X2 =0.4 −−− 0
> 0.4X2 =0.8 −−− 0
> 0.8X2 =1.6 −−− 1
> (1を越えたら小数点以下を計算)
> 0.6X2 =1.2 −−− 1
> 0.2X2 =0.2 −−− 0
> 0.4X2 =0.8 −−− 0
> 0.8X2 =1.6 −−− 1
> ・ ・
> ・ ・
> 以下、続いていくのでアが無限小数。
> 過去の宿題メールを参考にしました。(19991020の問題)
>
> ちなみに イ 0.125 = 0.001
> ウ 0.375 = 0.011
> エ 0.5 = 0.1 ですね。
どうもありがとうございました。
★★★解説:二種向け★(2000/4/24)
16進小数0.FEDCを4倍した値はどれか。
ア 1.FDB8
イ 2.FB78
ウ 3.FB70
エ F.EDC0
■解答■(宿題メールより)
二種午前平成11年秋問2
ウ 3.FB70
>
2進数で考えると、4倍する=左2ビットシフト
> (0.F)16=(0.1111)2 よって
> (0.1111)2 << 2 は (11.11)2、整数部分は3。
>
どうもありがとうございました。
> 16進小数0.FEDCを2進数で表すと
> 0.1111111011011100
> 4倍するということは2ビット左シフトするということだから、
> 11.1111101101110000
> ↑↑
>
シフトした結果生じる空欄には0が入る。
> これを16進数になおすと 3.FB70
どうもありがとうございました。
>関数電卓でFEDC×4を行うと、3FB70となりました。
どうもありがとうございました。
> どうも、k進数の計算は苦手です。
> これは、慣れですか?
> 計算をしだすと、面倒くさくなってきます。
>
選択肢から絞って、計算して行った方がいいのでしょうか?
慣れは大切です。先ず,理解してから,練習をします。選択肢を絞ってから,
計算するのは,本番のテクニックです。
★★★解説:二種向け★(2000/5/11)
式 0.0011(2)÷0.001(2) の値はどれか。ここで,x.xx(2)
は 2 進数を表わす。
ア 0.00001(2)
イ 0.000011(2)
ウ 0.11(2)
エ 1.1(2)
■解答■(宿題メールより)
二種午前平成12年春問6
エ 1.1(2)
> 0.0011=1/2^3+1/2^4=1/8+1/16
> 0.001=1/2^3=1/8
>
> (1/8+1/16)÷1/8 =3/16÷1/8 =0.1875÷0.125 =1.5
>
> 1.5ううち、0.5を2進数に変換すると0.1(2)になる
> 1(10)は2進数でも1なので結果、1(2)+0.1(2)=1..1(2)となる
どうもありがとうございました。
>
ちょっと分からなかったので割っているのだから増えるはずは無いよなと
> 考え ア
と思ったのですが、分数で割っているのだから増えるのですよね?
> というわけで エ にしてみました。
どうもありがとうございました。そう考えると,見た瞬間に解答が選べますね。
>割る数と割られる数を左に3ビットシフトすると
>1.1(2)÷1(2)=1.1(2)
>答えは、エ
どうもありがとうございました。
>0.001(2) = 2^-3 であるから,
>0.0011(2)を左に 3bit 移動させればよい。
>よってエが正解。
どうもありがとうございました。この解き方が,一番期待された解き方でしょ
う。基数の演算が問題に出たら,シフトで処理できないか,検討してみましょう。