dポイントプレゼントキャンペーン実施中!

10進数25.25を2進数に変換する仕方を教えてください!!

A 回答 (4件)

n 進数の「abcd.ef」とは



 a * n^3 + b * n^2 + c * n^1 + d * n^0 + e * n^(-1) + f * n^(-2)

ということです。

2進数だったら n=2 ということです。

これに当てはめれば

 25.25 = 16 + 8 + 1 + 0.25
    = 1 * 2^4 + 1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 + 0 * 2^(-1) + 1 * 2^(-2)
    = 1 1001.01

小数点以下が「0.25」はピッタリ 1/4 = 1/2^2 = 2^(-2) なので、例題としては簡単すぎます。

たとえば「0.1」だと
0.1[10] = 0 * 0.5 + 0 * 0.25 + 0 * 0.125 + 1 * 0.0625 + 1 * 0.03125 + 0 * 0.015625 + 0 * 0.0078125 + 1 * 0.00390625 + 1 * 0.001953125 + ・・・
= 0.000110011・・・[2]
というふうに、無限小数かな?
    • good
    • 2
この回答へのお礼

ありがとうございます!

お礼日時:2020/08/06 01:31

どうやら、n進数の位取りを憶えていただいたほうが良さそうですね。


例えば、10進数の 1234 という数値。
これは、10の3乗 × 1 + 10の2乗 × 2 + 10の1乗 × 3 + 10の0乗 × 4 という意味です。
このときに、nの0乗 = 1 という決まりがありますから、よく理解して下さいね。
また、nの1乗 = n とします。

要するに、一の位、十の位、百の位、千の位‥‥と位取りが左に進むにつれて、0乗、1乗、2乗、3乗‥‥と見てゆくわけです。‥‥ (ア)

> 16進数の58と47の足し算の結果を 2進数で表す仕方も教えていただけないでしょうか? ‥‥ (イ)

最初に、わざと10進数に直してから、足し算をしてみましょう。
(ア) の原理から、16進数の 58 は、16 × 5 + 1 × 8 = 88 。つまり、10進数の 88 です。
同じく、16進数の 47 は、16 × 4 + 1 × 7 = 71 。10進数の 71 ですね。
88 + 71 = 159 となるので、10進数の 159 を 2進数に直せば良い、ということになります。‥‥ (ウ)

そこで、回答 No.2 で書いたように、159 を 2 で次々に割ってゆきます。
ここでも、商を下に、余りを左に書いていってみて下さい。以下のような感じで書きます。
繰り返し 2 で割っていって、最後が 1 になったらおしまいです。

1 ← 159 ‥‥ 159 ÷ 2 = 79 余り 1
     ↓
1 ←  79 ‥‥ 79 ÷ 2 = 39 余り 1
     ↓
1 ←  39 ‥‥ 39 ÷ 2 = 19 余り 1
     ↓
1 ←  19 ‥‥ 19 ÷ 2 = 9 余り 1
     ↓
1 ←  9 ‥‥ 9 ÷ 2 = 4 余り 1
     ↓
0 ←  4 ‥‥ 4 ÷ 2 = 2 余り 0
     ↓
0 ←  2 ‥‥ 2 ÷ 2 = 1 余り 0
     ↓
     1

そうしたら、最後 ⇒ 最初 の方向で、最後に残った 1 と、余りの 1 と 0 を、順番に並べてゆきます。
上の例でいうと、10011111 です。
これが、(ウ) つまりは10進数の 159 を 2進数に変換したときの数値です。‥‥ (エ)

(エ) で導かれた 2進数の 10011111 という数字は、次のような意味を持っています。

2 の 7乗 × 1 = 128 × 1 = 128
2 の 6乗 × 0 = 64 × 0 = 0
2 の 5乗 × 0 = 32 × 0 = 0
2 の 4乗 × 1 = 16 × 1 = 16
2 の 3乗 × 1 = 8 × 1 = 8
2 の 2乗 × 1 = 4 × 1 = 4
2 の 1乗 × 1 = 2 × 1 = 2
2 の 0乗 × 1 = 1 × 1 = 1

128 + 0 + 0 + 16 + 8 + 4 + 2 + 1 = 159 。
(エ) の 2進数の 10011111 は、確かに、10進数の 159 のことだというのがわかりますよね。

(エ) は (ウ) で書いたとおり、10進数の 88 と 71 を足し算した結果です。
言い替えると、(イ) での 16進数の 58 と 47 を足し算した結果だよ、ということになります。

ということで、まとめると、16進数の 58 と 47 を足し算した結果は、2進数だと 10011111 になります。
ゆっくり順をたどって見ていって下さいね。きっとわかるはずです。
    • good
    • 3
この回答へのお礼

ありがとうございます!!

お礼日時:2020/08/06 01:31

理屈抜きで、やり方を憶えてしまったほうが良いと思います。


以下のやり方は、どんな数でも応用が利きますよ。

10進数を、まず、整数部分と小数部分に分けます。
つまり、10進数の 25.25 を 25 と 0.25 に分解します。

整数部分 25 を 2 で次々に割ってゆきます。
ここでは、商を下に、余りを左に書いていってみて下さい。以下のような感じで書きます。
繰り返し 2 で割っていって、最後が 1 になったらおしまいです。

1 ← 25 ‥‥ 25 ÷ 2 = 12 余り 1
     ↓
0 ← 12 ‥‥ 12 ÷ 2 = 6 余り 0
     ↓
0 ←  6 ‥‥ 6 ÷ 2 = 3 余り 0
     ↓
1 ←  3 ‥‥ 3 ÷ 2 = 1 余り 1
     ↓
     1

そうしたら、最後 ⇒ 最初 の方向で、最後に残った 1 と、余りの 1 と 0 を、順番に並べてゆきます。
上の例でいうと、11001 です。
これが、10進数の 25 を 2進数に変換したときの数値です。‥‥ (ア)

小数部分 0.25 のほうは、その数字の 小数部分だけに 2 を次々に掛けてゆきます。
次のような感じになります。

0.25 × 2 = 0.50
0.50 × 2 = 1.00
0.00 × 2 = 0.00 ‥‥ 以降、延々と 0 が続く

そうしたら、出てきた数字の整数部分を、上から順番に並べてゆきます。
上の例でいうと、0.010‥‥になります。
これが、10進数の 0.25 を 2進数に変換したときの数値です。‥‥ (イ)

最後に、(ア) と (イ) を合わせて記すと、11011.01 になります。
これが、10進数の 25.25 を 2進数に直したときの数値です。
    • good
    • 4
この回答へのお礼

丁寧な解説ありがとうございます!!

大変申し訳ないのですが
16進数の58と47の足し算の結果を2進数で表す仕方も教えていただけないでしょうか??

お礼日時:2020/08/05 20:24

面倒なんで4倍した数値を2進数にした後、2ビットシフトする。



 25.25×4=101(←これ、実は左に2ビットシフトしてるのと同じ)
 101=0x1100101
 右に2ビットシフトで11001.01(←これ、実は4で割っているのと同じ)

少数部の計算方法もあるのですが、面倒なのでパス。
どうしても知りたい場合は、自身で調べてみてください。
難しくは無いのですが、説明がとても面倒なんです。
    • good
    • 0
この回答へのお礼

簡単でわかりやすいです!!ありがとうございました!

お礼日時:2020/08/05 18:58

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