
突然の質問失礼いたします。
現在私は学校で引き戻し法・引き放し法といった除算のアルゴリズムについて学んでいるのですが、そのうちの引き放し法について質問したく投稿しました。
引き放し法について自分で勉強しようと思い、いろいろ調べていたのですが、商と余りを出す引き放し法は見つかっても、小数点以下にわたってまで商を求める引き放し法がまったく見つかりませんでした。
(例えば5÷2=2あまり1と結果を出すのではなく、5÷2=2.5と結果を出す引き放し法のことです。)
少数点以下にわたってまで商を求める引き放し法は商と余りを出す引き放し法で表現できるのでしょうか?
もしよろしければ教えていただけると幸いです。また、参考にすべきインターネットサイト等もあれば教えていただけると助かります。
No.4ベストアンサー
- 回答日時:
★30÷8と考えます。
>3÷8などと言った被除数<除数の場合は同じ方法でやってみると
>解がでない気がするのですが・・・。
↑
解けます。
・3÷8 は商が 0 となりますがこの時は 3×10=30 から 8 を割ればよい。
よって
(1)3÷8=0
(2)30÷8=3あまり6
と計算します。0、3あまり6 と出ますから 0.3 となるわけです。
・あまりの 6 は計算を続けて
(3)6÷8=0
(4)60÷8=7あまり4
となります。ここで 0.3 に 7 を追加して 0.37 となります。
・あまりの 4 は計算を続けて
(5)4÷8=0
(6)40÷8=5あまり0
となります。ここで 0.37 に 5 を追加して 0.375 となります。
・割り切れたので 3÷8=0.375 となります。
このように『被除数<除数』の場合は10倍して繰り返します。
それでは宿題として3÷800はどうなるでしょうか?
出来たら補足などに書き込んでみて下さい。
・以上。
この回答への補足
解答してみました。
(1)3÷800=0
(2)30÷1800=0
(3)300÷800=0
(4)3000÷800=3あまり600 0.003
(5)600÷800=0
(6)6000÷800=7あまり400 0.0037
(7)400÷800=0
(8)4000÷800=5 0.00375
よって解は0.00375。でしょうか。大変わかりやすい回答ありがとうございます!
大変図々しい気はするのですが、どうしてもプログラミングが前に進まないのでもう一度だけ補足をさせてください!
10進法によるアルゴリズムは容易に出来たのですが、後日の追加条件でプログラミングがアセンブリ言語を用いなければならなくなった為、2進法で行わないといけないみたいで・・・。
10進法による引き放し法は上記のように簡単に出来ることがわかりましたが、2進法でも1÷17といった除数>被除数の割り算を引き放し法で行うことは可能なのでしょうか?
10進法の方法を応用してみようと考えてみましたが、10進法では10倍を行っている箇所が2進法では表現しにくい気がしまして・・・。
ちなみに除数<被除数の割り算は検索をかけたらいろんな場所で出てきました。
たびたびな質問で大変申し訳御座いません。

No.6
- 回答日時:
既に詳しい回答が付いてますが、プログラムするのに、アルゴリズムのわかりやすそうな参考サイトは、以下かな?
2進数の場合
http://jndb.pc.mycom.co.jp/column/architecture/0 …
10進数 タイガー計算機での解説、小数点以下も、計算機の桁の許す限り計算可能
http://www.wizforest.com/gear/tiger/
おまけ タイガー計算機の歴史 大正時代から日本はこんなすごいもの作ってたんですね。
http://www.tiger-inc.co.jp/temawashi/temawashi.h …
下のふたつのサイトは見たことありますね。一番上のサイトは大変詳しくのっているので是非参考にさせていただきます。
わざわざ紹介していただき本当にありがとうございました!
この引きはなし、引き戻し法を学んで、いつも何気なく使っている割算がこんなに手順を踏んだ計算を行っているのには驚きでした。プログラミングとしての意味だけでなく、数学的な意味でも大変深い学問ですね。本当に興味を持ちました。
No.5
- 回答日時:
★アドバイス
>2進法でも1÷17といった除数>被除数の割り算を引き放し法で行うことは可能なのでしょうか?
↑
可能です。というよりは出来ます。
>10進法の方法を応用してみようと考えてみましたが、
>10進法では10倍を行っている箇所が2進法では表現しにくい気がしまして・・・。
↑
10進法で10を掛けてから引いています。
2進法なら2を掛けてから引けば良いだけです。
つまり基数(n進数のn)の数を掛けるわけです。
・なお2進法で2を掛けるという事は、左に1ビットシフトすることと等しいですが分かりますか?
そもそも10進法で左に1桁シフトするとは、10を掛ける事になるのです。
>ちなみに除数<被除数の割り算は検索をかけたらいろんな場所で出てきました。
↑
でしょうね。
定番だから。
いや基本だから。
・以上。ちなみに『3÷800』の解答は完璧です。2進法も同じ要領で0を増やせば簡単です。
なるほど・・・。毎回ながら大変詳しい解説ありがとうございます。
左へのシフト作業は引き戻し法にて使用したので理解できます。
おかげで大体のアルゴリズムをかけました。
本当にありがとうございました!
No.3
- 回答日時:
★5÷2=2.5の場合。
・商の 2 が出るのは分かりますよね。
そしたら割り切れるまで 10 を掛けて計算します。
(1)5 -2 -2 = 2あまり1
(2)あまり1に10倍して 10 から引き始める
(3)10 -2 -2 -2 -2 -2 = 5あまり0
ここで終了する。
このとき (2) で 10 倍しているので (3) で出た 5 は 10 で割ります。
すると 0.5 です。商の 2 と小数部の 0.5 を足して 2.5 となります。
★7÷3=2.333…の場合。
・商の 2 は分かりますよね。
(1)7 -3 -3 = 2あまり1
(2)あまり1に10倍して 10 から引き始める
(3)10 -3 -3 -3 = 3あまり1
(4)(2)と同じ方法を繰り返す
この7÷3は永遠にあまりが 1 となるため循環小数となります。
よって無限に計算し続けます。
適当に計算を終了する小数点の桁数を決めて打ち切ります。
まとめ:
・基本は割り切れるまで余りに 10 倍して引き算を繰り返します。
循環小数も考慮して適当に計算を終了させます。
例えば小数点以下 100 桁で終了とか。
・以上。
この回答への補足
すいません、また問題が発生しまして・・・。
5÷2や7÷3などの被除数>除数の場合は上記の方法で解けるのですが、3÷8などと言った被除数<除数の場合は同じ方法でやってみると解がでない気がするのですが・・・。
このような場合も上記の方法で解けるのでしょうか?それとも別の方法があるのでしょうか?
度々すいません。
なるほど!!
思わずうなってしまうような解答本当にありがとうございます。
プログラムを作成する場合は余りが生じた場合と生じない場合で分岐させて、分岐した場所で10倍した後に順に引いていくという作業をやればいいってことになるのでしょうかね。
頭の中でアルゴリズムが浮かんできたので早速書いてみます。
本当にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
PHPとJavaでSHA256の結果を同じ...
-
VBAで関数をつくる
-
論理演算子.NOT.の使い方
-
排他的論理和 BCC(水平パリテ...
-
スレッド処理からダイアログを...
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
チェックデジット計算できる関...
-
計算量の少ないn乗根の求め方
-
重み付きユークリッド距離
-
MATLABの積分について
-
Java 電卓の連続計算
-
引き放し法による除算アルゴリ...
-
モジュラス103の計算とは何でし...
-
数値計算の高速化 (cos, sin, exp)
-
モジュロ
-
エクセルマクロで計算結果の値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
VBAで関数をつくる
-
[急募]Pythonについてです。
-
数値計算の高速化 (cos, sin, exp)
-
C言語についての質問です。 ル...
-
切り上げたい
-
DLL(VC++で作った)で稼動中の...
-
CとFORTRANの計算速度はどちら...
-
趣味で「乗換案内」みたいなソ...
-
CGIの実行権限(ディスク容...
-
エクセルで特定のセルのみを任...
-
functionを含んだプログラムを...
-
時間差を求める
おすすめ情報