「割り算」を足し算のみで計算してみます そして なぜ整数値同士の割り算の計算結果が整数になるのかについて考察してみます


ソーラー「13÷3=・・・


13=5+5+5です。


こ、これは・・・」


マックス 「はい、はい、


13=5+5+5=15ででっぱちゃったい。


みんなすぐにもどりましょうね~


13=4+4+4=12


はい、13以内におさまってますね~。


よろしくおねがいいたします。」


ソーラー「そんなに5は誌上デビューしたかったんですか?」


マックス 「はい、はい、みんなすぐにもどりましょうね~


13を三つの部分にわけるのに5を使うと


13=5+5+5(3つの5の部分)=15となりました。


5では大きかったようです。


そこで


13=4+4+4にまでもどり


今度は4に0.1を加えた


4.1をたしあわせていきましょう。」


ソーラー「??・・・」


マックス 「


13=4.1+4.1+4.1=12.3


これではまだ13になりません。


4.1に0.1をたした4.2では・・・


13=4.2+4.2+4.2=12.6


これではまだ13になりません。


さらに0.1を加えた


4.3を足し合わせていくと


13=4.3+4.3+4.3=12.9


これではまだ13になりません。


さらに0.1を加えた


4.4を足し合わせていくと


13=4.4+4.4+4.4=13.2


やっぱり、でっぱりました~~~\(^^)/


ソーラーさん?」


ソーラー 「やっぱり、春がきたんですね。マックス」


マックス


「そこでひとつ前の


13=4.3+4.3+4.3=12.9までもどり


今度は4.3に0.01をたしていきましょうね~。


13=4.31+4.31+4.31=12.93


これでも13になりません。


そこで


今度は4.31に0.01をたしていくんじゃ


13=4.32+4.32+4.32=12.96


これでも13になりませんのじゃ。


じゃよ~~~(^^)/


そこで


今度は4.32に0.01をたしていくんじゃ


4.33にするんじゃ


13=4.33+4.33+4.33=12.99


おしいィィィ・・・


そこで


今度は4.33に0.01をたしていくんじゃ


13=4.34+4.34+4.34=13.02


またでっぱっちやったの・・」


ソーラー「またでっぱっちやったの・・・・・」


マックス 「あたしは、あたしはうれしい、」


ソーラー 「うれしいんんですか!」


アレサ 「嬉しいんですか?」


マックス 「そこで


13=4.33+4.33+4.33=12.99にもどり


今度は


4.33に0.001をたしていきます。


13=4.331+4.331+4.331=12.993


これでも


13にならないな・・・」


ソーラー「どうやら


このまま足し算のみで割り算を実行すると


13÷3の答えは4.33333・・・・


と無限小数になりそうです。」


マックス


「もっと計算しようとおもったが


先にいわれてしまったか・・・


やるな、ソーラー 


パソ電卓で計算しても


13÷3の答えは4.33333・・・・


になる。


まあ、いろいろあったが


つまり


足し算のみの組み合わせで


13÷3

割り算の結果も


4.33333・・・・と


あらわすことができたのだ。


ふふふ


そしてさらに俺には必殺技があるのだ。」


ソーラー「必殺技・・・?」


マックス 「13÷3=


13と3はint型におさめられているよなあっ


ふわあはははははははははは・・・」


ソーラー 「そ、それは・・・まさかあー」


マックス 「int型の数値同士で割り算をした場合は


13÷3=4.33333・・・と小数点以下がでた場合は


小数点以下の値はきりとられ


13÷3=4となるのだったなあ・・・はははは


つまり


整数の型、int型同士の割り算


では


きれいに割り切れず小数点以下の余りが出た時点で


コンピュータは計算終了している。


とみなすとだなあ


俺たちが


割り算を足し算のみであらわしたい場合でも


コンピュータにならって


答えは整数部分4がでたところでやめればいいのだあ。


ふはははあっ


めちゃくちゃ計算簡単に終わるじゃないか。


無限に割り算を足し算であらわして計算していくと


時間もかかるし、


もし


この計算をおこなったあとに別の命令文があったら


なおさら、その別の命令文にとりかかるのに時間がかかるからな


コンピューターも無限計算は大変だからなあ。


あっあう」


アレサ 「00001111111?????」


マックス


「あっああっ 


きた、きたァ


 まさか それで



『int型(整数)同士で割り算をした場合は


13÷3=4(通常の計算結果では4.33333・・・)


5÷2=2(通常の計算結果では2.5)


7÷4=1(通常の計算結果では1.75)


と小数点以下がでた場合は


なんでもかんでも小数点以下の値はきりすてられる』



のは、


コンピュータにえんえんと無限に計算をさせないために


int型同士で割り算をした場合は


小数点以下の値はきりとられ、


整数値のみがのこる仕様にしたのか?


とくに初期型のコンピュータではこの方式は有効だったんじゃないか?


その名残がまだ今のコンピューターに残っている・・・?」


ソーラー 「む、むう、ふざけて遊んでいるうちに・・・


なんか意外な考察がえられました・・・


確かにそれも1理ある考え方です・・・


まあ、


intの型4バイト内に割り算の計算結果をおさめるというシステムも


絡んでいるのかもしれないですが・・・


(天国にいけるC言語入門 自然の妙 すばらしい自然のシステム


のエピソードで語られていることも多少からんでいます。)


いろんな状況がからみあって今のコンピュータが


つくられてきたと思うので


その考え方もint型同士で割り算をした計算結果が整数になるのに


影響をあたえたのかもしれませんね。」


マックス 「まあ、いまの


int型同士の割り算


13割る3の場合だけでなく


13.0割る3.0とdouble型同士の割り算の場合でも


いいアイデアあるう~んだよ ソーラーよ」


ソーラー 「ほ、ほう?」



















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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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