
突然の質問失礼いたします。
現在私は学校で引き戻し法・引き放し法といった除算のアルゴリズムについて学んでいるのですが、そのうちの引き放し法について質問したく投稿しました。
引き放し法について自分で勉強しようと思い、いろいろ調べていたのですが、商と余りを出す引き放し法は見つかっても、小数点以下にわたってまで商を求める引き放し法がまったく見つかりませんでした。
(例えば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で質問しましょう!
似たような質問が見つかりました
- その他(保険) 投資目的の保険商品について。受取時にかかる税金について保険会社に質問しました。 商品を端的に説明する 3 2023/08/08 20:33
- その他(悩み相談・人生相談) この時期の湿気について 部屋にプラスチック?の引き出しがあるのですが大切な物を入れています。 この時 3 2023/06/18 22:46
- iPhone(アイフォーン) iPhoneの機種変更するときのデータの引き継ぎについて 3 2022/07/06 18:29
- ヤフオク! 落札者の削除について 4 2023/05/22 14:37
- 子供 何故引き篭もりニートを放っておくんですか? 親は、子供を何だと思ってますか? 誰かに助けを求めたり、 11 2023/02/05 15:39
- その他(資産運用・投資) 資産運用について 5 2023/08/23 10:33
- 会社・職場 意地くその悪い上司の対処法 1 2022/04/26 12:17
- その他(教育・科学・学問) 小学生の算数の商について 3 2023/03/06 14:11
- 会社・職場 意地くそが悪い上司 3 2022/04/26 13:47
- 統計学 直線の傾き(回帰係数)から相関係数を計算できるのでしょうか? 2 2022/09/16 19:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
matlabでの右軸plot
-
Perlでのルートの計算
-
めちゃきれい
-
MathematicaのNDSolveで連立常...
-
(汎用的に)行列の積を求める...
-
機械の扱える最も0に近い実数は?
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
移動平均を計算するプログラム
-
パイソン。前の計算が、後の関...
-
チェス 論理クイズ
-
【fortran77】データ行数のカウ...
-
POSTを使って、アプリを操作したい
-
エクセル以外で麻雀の成績を管...
-
正しい五十音順について
-
銃を発砲するならともかく、日...
-
方対数グラフを書く為の計算方...
-
javaからAS400のプログラム起動
-
OS入ってる機器のソフト・アプ...
-
ニュースを取得してホームペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
変化させるセルが変化しない
-
エクセルで特定のセルのみを任...
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
バッチファイルでウインドウを...
-
Visual C++でdebugとreleaseで...
-
y=(x^2 +3x+1)^4を微分の定義を...
-
入射角反射角
-
スレッド処理からダイアログを...
-
60進数の四則計算
-
Javaと他言語比較について
-
VBAで関数をつくる
-
C言語 Σをつかったプログラム
-
CRC8を教えてください
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
おすすめ情報