☆☆☆10進数の実数を2進数で表現する おまけ より簡単に10進数の実数を2進数に変換する方法 




より簡単???(笑)に


     10進数の実数を2進数に変換する方法について述べておきましょう。




           0.056754796337のような10進数の実数でも


         簡単に2進数で表すことができるようになっちゃうぞ!






今までのエピソードで見てきたように


🍎🍎

一般に(2のn乗未満の整数値🌞🌞🌞)=((2のn乗)-1以下の整数値)はすべて


(2のn乗未満の整数値)の2のn乗を2で割った


2の(n-1)乗以下の


2の(n-1)乗 , 2の(n-2)乗 , 2の(n-3)乗・・4,2,1の


数値の足し合わせをもちいて表すことができます。🍎🍎



さらに発展させると


一般に


10進数の実数値🌞🌞🌞


(2のn乗)、(2のn-1乗)、(2のn-2乗)・・


 2、1、 (2の-1乗)=2分の1、 (2の-2乗)=(2の2 乗)分の1


( 2の-3乗)=(2の3乗)分の1・・・


の数値の足し合わせを用いて表すことができます。


そして、そのように


10進数の実数値を


(2のn乗)、(2のn-1乗)、(2のn-2乗)・・


 2、1、 (2の-1乗)=2分の1、 (2の-2乗)=(2の2 乗)分の1


( 2の-3乗)=(2の3乗)分の1・・・


の足し合わせで表してしまえば


🍊🍊🍊🍊🍊🍊🍊

(10進数)2のn乗=(2進数)1000000・・・0(0の数がn個)

(10進数)2の-n乗=(2進数)0.000000・・・0001(整数値部分と小数点以下の0を合わせた数がn個)

の関係性をもちいて

🍊🍊🍊🍊🍊🍊🍊


(2のn乗)、(2のn-1乗)、(2のn-2乗)・・


 2、1、 (2の-1乗)=2分の1、 2の-2乗=(2の2 乗)分の1


2の-3乗=(2の3乗)分の1・・・


の足し合わせで表された10進数実数値を


2進数

1000000・・・000(0の数がn個)

100000・・・000(0の数がn-1個)

10000・・・000(0の数がn-2個)・・・

10

1

0.1

0.01

0.001


の足し合わせで表すことができるようになります


上記は今までのやり方ですね


では 実際に10進数の実数値3.125を2進数であらわしてみましょう。



まず  3.125の整数部分3は2進数11であらわすことができます。


そうなると残りの0.125をどうやって2進数であらわすか


ということになりますね。


一般に


10進数の実数値🌞🌞🌞


(2のn乗)、(2のn-1乗)、(2のn-2乗)・・


 2、1、 (2の-1乗)=2分の1、 (2の-2乗)=(2の2 乗)分の1


( 2の-3乗)=(2の3乗)分の1・・・


の数値の足し合わせを用いて表すことができます。


たとえば10進数の実数値が0.125だったとしても


それは成立します


つまり


         どのような実数値でも


(2のn乗)、(2のn-1乗)、(2のn-2乗)・・


 2、1、 (2の-1乗)=2分の1、 (2の-2乗)=(2の2 乗)分の1


( 2の-3乗)=(2の3乗)分の1・・・


の数値の足し合わせを用いて表すことができます。



0.125は整数値部分が0なので


0.125は


小数点以下の数値である


(2の-1乗)=2分の1、 (2の-2乗)=(2の2 乗)分の1


( 2の-3乗)=(2の3乗)分の1・・・


の足しあわせを用いて表すことができます


0.125を

2分の1

(2の2 乗)分の1

(2の3乗)分の1

・・・


の足し合わせをもちいて表したなら


仮に次のような数式になっているはずです。


🍒0.125=


A×1/2+B×1/(2の2 乗)+C×1/(2の3乗)


+D×1/(2の4乗)・・・🍒


{A B C D・・・・・はいずれも10進数0か1の値をとります}


そして


A×1/2+B×1/(2の2 乗)+C×1/(2の3乗)


+D×1/(2の4乗)・・・

👆

この式を


🍊🍊🍊🍊🍊🍊🍊

(10進数)2のn乗=(2進数)1000000・・・000(0の数がn個)

(10進数)2の-n乗=(2進数)0.000000・・・0001(0の数がn個)

の関係性をもちいて

🍊🍊🍊🍊🍊🍊🍊



次のように2進数で表現することができます。


A×0.1+B×0.01+C×0.001+D×0.0001・・・


{A B C D・・・・・はいずれも(10進数)0か1の値をとります}


ここで


A B C D・・・・・はいずれも(10進数)0か1の値をとり、


2進数の係数となっています。


ですので


A×0.1は10進数×2進数となっているので


A×0.1を計算するときは


10進数もしくは2進数に統一して計算する必要があります


ここで


🍒の式の


両辺を2倍して


0.25=A+B×1/2+C×1/(2の2乗)+D×1/(2の3乗)・・・


としてみます



ここでAは10進数0か1の値をとりますが


左辺の0.25は整数値を含んでいないのでAは0


となるのがわかります。


よって


0.25=B×1/2+C×1/(2の2乗)+D×1/(2の3乗)・・・となります。


さらに


両辺を2倍して


0.5=B+C×1/2+D×1/(2の2乗)・・・


としてみます


ここでBは0か1の値をとりますが


左辺の0.5は整数値を含んでいないのでBは0


となります。


さらに

0.5=B+C×1/2+D×1/(2の2乗)・・・


B=0を代入して


0.5=C×1/2+D×1/(2の2乗)・・・


としたものを


両辺を2倍して


1=C+D×1/2・・・


としてみます


左辺の1は小数点以下の項を含んでいないので


D以下の


すべての項の係数は0となります


よって


C=1


となります


よって

A=0

B=0

C=1

D=0(D以降は全て0)

となります


10進数0.125=A×1/2+B×1/(2の2 乗)+C×1/(2の3乗)+D×1/(2の4乗)・・・



10進数0.125=A×0.1+B×0.01+C×0.001+D×0.0001・・・・・

(0.1,0.01,0.001,0.00001は2進数数値です)


に等しいので




🍒10進数0.125=


A×1/2+B×1/(2の2 乗)+C×1/(2の3乗)+D×1/(2の4乗)・・・

=

A×0.1(2進数)+B×0.01(2進数)+C×0.001(2進数)+D×0.0001(2進数)・・・🍒


=(10進数)0×0.1(2進数)+(10進数)0×0.01(2進数)+(10進数)1×0.001(2進数)+(10進数)0×0.0001(2進数)・・・🍒


=(2進数)0×0.1(2進数)+(2進数)0×0.01(2進数)+(2進数)1×0.001(2進数)+(2進数)0×0.0001(2進数)・・・🍒


〇  〇  〇

10進数の数値と2進数の数値は計算できないので


👆ここでは

(2進数)0=(10進数)0

(2進数)1=(10進数)1

の関係を用い

2進数同士の掛け算に変更しました

〇  〇  〇


=(2進数)0.0010・・・🍒


となります。



この計算において


2進数にで表したい10進数数値0.125を順々と2倍して行きましたが

👇

0.25

0.5 

1


これらの数値

の一番左端の数値を上から順にひろっていくと


001となり


001は 


今の🍒の答えの2進数0.0010・・・・・の小数点以下の部分001と対応しています。


よって


例えば


10進数実数0.09876543を2進数表示したければ


0.09876543をひたすら2倍し


0.19753086

0.39506172

0.79012344

1.58024688

(ここで整数値1をとりのぞいた0.58024688を2倍にすることになります。

なぜ そうなるかは先ほどの例を参照してください)

(なんで そうなるのかな?)

(先程の例を参照しても 全然意味がわからんぞ?)

(もうん  後にく・わ・し・い解説💖をのっけてあるのよ😊)

1.16049376👈0.58024688を2倍しました

(ここでも整数値1をとりのぞいた0.16049376を2倍にすることになります。)

0.32098752

0.64197504

1.28395018

最後に一番左端の0もしくは1の整数値の部分をよみとって


つなぎあわせていくと


00011001・・・


そしてこの


00011001・・・の先頭に


0.00011001と0.をいれたものが


0.09876543の2進数表示0.00011001・・・となります。


これで皆さんも10進数実数を自由に2進数に変換できるように


なりました。 おめでとうございます。


友達の前でいきなり


10進数実数を2進数に変換したら


完全に驚くことまちがいなしです。



おまけでしたよ~ん。



さらにおまけのコーナーです


では


今度は簡単な方法でなく


            実際に


10進数実数0.09876543を数式をもちいて


2進数表示に変換してみましょう


まず  0.09876543の整数部分0は2進数0であらわすことができます。


そうなると残りの0.09876543をどうやって2進数であらわすか


ということになりますね。


一般に


10進数の実数値🌞🌞🌞


2のn乗、2のn-1乗、2のn-2乗・・


 2、1、 2の-1乗=2分の1、 2の-2乗=(2の2 乗)分の1


2の-3乗=(2の3乗)分の1・・・


の数値の足し合わせを用いて表すことができます。


2のn乗

2のn-1乗

2のn-2乗

2

1 

2の-1乗=2分の1

2の-2乗=(2の2 乗)分の1

2の-3乗=(2の3乗)分の1

は用いられないものがあっても構いません




0.09876543は整数値部分が0なので


0.09876543を

小数点以下の数値

2分の1

(2の2 乗)分の1

(2の3乗)分の1・・・


の足し合わせをもちいて表すことになります


2のn乗

2のn-1乗

2のn-2乗

2

1

は登場してきませんね


0.09876543を

小数点以下の数値

2分の1

(2の2 乗)分の1

(2の3乗)分の1・・・


の足し合わせをもちいて表した数式は以下のようになっているはずです。


🍒0.09876543=


A×1/2+B×1/(2の2 乗)+C×1/(2の3乗)


+D×1/(2の4乗)・・・🍒


{A B C D・・・・・はいずれも10進数(0もしくは1の値)をとります}


そして


A×1/2+B×1/(2の2 乗)+C×1/(2の3乗)


+D×1/(2の4乗)・・・

👆

この式を


🍊🍊🍊🍊🍊🍊🍊

(10進数)2のn乗=(2進数)1000000・・・000(0の数がn個)

(10進数)2の-n乗=(2進数)0.000000・・・0001(0の数がn個)

の関係性をもちいて

🍊🍊🍊🍊🍊🍊🍊



次のように2進数で表すことができます。


A×0.1+B×0.01+C×0.001+D×0.0001・・・


{A B C D・・・・・はいずれも10進数0か1の値をとります}


ここで


A B C D・・・・・はいずれも10進数0か1の値をとり、


2進数の係数となっています。



ここで


🍒の式の


両辺を2倍して


0.19753086=A+B×1/2+C×1/(2の2乗)+D×1/(2の3乗)・・・


としてみます



ここでAは10進数で0か1の値(2進数で0か1の値)をとりますが


左辺の0.19753086は整数値を含んでいないのでAは0


となるのがわかります。


よって


0.19753086=B×1/2+C×1/(2の2乗)+D×1/(2の3乗)・・・となります。


さらに


両辺を2倍して


0.39506172=B+C×1/2+D×1/(2の2乗)・・・


としてみます


ここでBは0か1の値をとりますが


左辺の0.39506172は整数値を含んでいないのでBは0


となります。


さらに


0.39506172=C×1/2+D×1/(2の2乗)・・・


両辺を2倍して


0.79012344=C+D×1/2・・・


としてみます


左辺の0.79012344は整数値を含んでいないのでCは0


となります



さらに


0.79012344=D×1/2・・・


両辺を2倍して


1.58024688=D+E×1/2+F×1/(2の2乗)・・・


としてみます


おや?


1.58024688の整数値部分は1ですね


ですので


Dは1の値をもつことになります


すると・・・



     💖ここが注目ポイントです💖


1.58024688=D+E×1/2+F×1/(2の2乗)・・・



1.58024688=1+E×1/2+F×1/(2の2乗)・・・


となります


ですので


両辺から1を引くと


🍒0.58024688=E×1/2+F×1/(2の2乗)・・・🍒


となります


ですので


🍒0.58024688=E×1/2+F×1/(2の2乗)・・・🍒


の両辺を2倍すると


🍒1.16049376=E+F×1/2・・・🍒


となります



つまり


1.58024688=1+E×1/2+F×1/(2の2乗)・・・


の両辺を2倍するのではなく


両辺から1を引いた


🍒0.58024688=E×1/2+F×1/(2の2乗)・・・🍒


の両辺を2倍することになるというわけです


1.58024688=1+E×1/2+F×1/(2の2乗)・・・


の両辺を2倍すると


3.16049376=2+E+F×1/2+・・・


となり


Eの値が少し求めにくくなります


(🌞ちょっと解説🌞


簡単に10進数実数値を2進数で表す方法の場合でも


1.58024688を2倍するのではなく


1を引いた


🍒0.58024688を2倍しました


なぜなら


1.58024688を2倍すると


3.16049376


となるからです


ここがちょっとしたポイントです


簡単な方法を用いて


10進数実数0.09876543を2進数表示する場合


0.09876543をひたすら2倍し


0.19753086

0.39506172

0.79012344

1.58024688

(ここで整数値1をとりのぞいた0.58024688を2倍にすることになります。

なぜ そうなるかは今の例を参照してください)

(なんで そうなるのかな?)

(今の例を参照しても やはり全然意味がわからんぞ?)

(もうん  ちょっと後にく・わ・し・い解説💖をのっけてあるの💖😊)

1.16049376

(ここで整数値1をとりのぞいた0.16049376を2倍にすることになります。)

0.32098752

0.64197504

1.28395018

最後に一番左端の0,1の整数値の部分をよみとって


つなぎあわせていくと


00011001・・・


そしてこの


00011001・・・の先頭に


0.00011001と0.をいれたものが


10進数0.09876543の2進数表示0.00011001・・・


めでたし💖 めでたし💖


となるのですが





               ここで



1.58024688



2倍するとなると


0.19753086

0.39506172

0.79012344

1.58024688

(ここで整数値1をとりのぞいた0.58024688を2倍にすることになります。

なぜ そうなるかは先ほどの例を参照してください)

(なんで そうなるのかな?)

(先程の例を参照しても 全然意味がわからんぞ?)

(そこで実際に整数値1をとりのぞかず1.58024688の2倍を実行すると・・・)

3.16049376

(さらに実際に3.16049376の2倍を実行すると・・・)

6.32098752

(さらに実際に6.32098752の2倍を実行すると・・・)

12.64197504

(さらに実際に12.64197504の2倍を実行すると・・・)

25.28395008

となり


最後に一番左端の整数値の部分をよみとって


つなぎあわせていくと


00013612・・・


そしてこの


00013612・・・の先頭に


0.00013612・・・と0.をいれたものが


0.09876543の2進数表示0.00013612・・・とはなりませんね💖


そこで

1.58024688

(ここで整数値1をとりのぞいた0.58024688を2倍にすることになります。)

のように

2倍を続けていて

左端の整数値部分が1になった段階で


1を取り除くことになります


そして

0.58024688

2倍することになります



🌞10進数実数値を2進数実数値に簡単に変換する方法のポイントはここです🌞)



そして


1.58024688=1+E×1/2+F×1/(2の2乗)・・・


の両辺を2倍するのではなく


両辺から1を引いた


🍒0.58024688=E×1/2+F×1/(2の2乗)・・・🍒


の両辺を2倍した



1.16049376=E+F×1/2・・・



1.16049376の整数値部分は1ですね


ですので


Eは1の値をもつことになります



よって

A=0

B=0

C=0

D=1

E=1

より


10進数実数0.09876543=


A×1/2+B×1/(2の2 乗)+C×1/(2の3乗)+D×1/(2の4乗)・・・


=A×0.1(2進数)+B×0.01(2進数)+C×0.001(2進数)+D×0.0001(2進数)+E×0.000001(2進数)・・・


=(10進数)0×0.1(2進数)+(10進数)0×0.01(2進数)+(10進数)0×0.001(2進数)+(10進数)1×0.0001(2進数)+(10進数)1×0.00001(2進数)・・・


=(2進数)0×0.1(2進数)+(2進数)0×0.01(2進数)+(2進数)0×0.001(2進数)+(2進数)1×0.0001(2進数)+(2進数)1×0.00001(2進数)・・・

〇  〇  〇

👆ここでは

(2進数)0=(10進数)0

(2進数)1=(10進数)1

の関係を用いました

〇  〇  〇


=(2進数)0.00011・・・


となります


👆上記が数式を用いて


10進数実数0.09876543を(2進数)0.00011・・・に変換する方法でしたが


簡単な方法より


かなり手間がかかることがお分かりになられたでしょうか?









  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る