「割り算」を足し算のみで計算してみます そして なぜ整数値同士の割り算の計算結果が整数になるのかについて考察してみます
ソーラー「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型同士の割り算の場合でも
いいアイデアあるう~んだよ ソーラーよ」
ソーラー 「ほ、ほう?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます