
たとえば
コンピュータでは2-1を補数を利用して計算します。
しかし、繰り下がりの概念があれば以下のように
直接計算できるはずです。
0010
-) 0001
-----
0001
元々コンピュータには、繰り下がりに対応する演算回路が
ないので、引き算が足し算のように簡潔にできない
と思ってよいのでしょうか?
また、掛け算は足し算のループを利用して計算しているのでしょうか?
割り算は、2の補数(ビット反転+1)の引き算をループさせて実現しているのでしょうか?
ということは、計算のうち割り算が一番時間がかかると思ってよいのでしょうか?
No.5ベストアンサー
- 回答日時:
こんにちは。
「引き算が足し算のように簡潔にできない」と思ってよいのでしょうか?
と聞かれたなら、「思ってよい」で正解です。
補数表現を使うことで、人間側で言う「加減算」を
コンピュータ側は全て「加算」で計算できます。
オーバーフローやアンダーフローは除きますが・・・
また、「乗除算」はイメージとしては「ループで実現している」であっていると思います。
回路の作り方にもよるのでしょうが、
掛け算の回路に対して、割り算の回路はおよそ3倍の素子が必要となるらしいとか。
それによって…、処理時間は2倍程度に抑えられているとか。
システム屋さんの世界(いわゆるディープなプログラマ)や、
特に組み込み回路のプログラム設計では
可能ならば割り算を一切使わない、使うとしても処理を独立させたりなどのために
プログラム最適化のための労力の半分を注ぎ込むほどのイメージだとか。
(注意:あくまでも私の偏見的イメージです。)
今時のプログラミングではコンパイラが大半の面倒をみてくれますが、
本当にカリカリチューンなシステムを作りたいなら
どの回路(処理)が、どのくらいの時間をしようするかを把握していた方がわいらしいです。
その最初の一歩が「割り算の回路は処理に時間がかかる」らしいです。
-----
現在の技術なら、減算器を組み込んだプロセッサも実用的かもしれませんが、
一般向けに導入されるだけの価値が、まだ見付かっていないようです。。。
No.4
- 回答日時:
直接引き算を行う回路 (減算器) 自体は存在します. ただ, ほかの回答者も言われているように「効率」を考えると, 減算器を実装す
るよりも加算器を使って 2の補数で引き算をした方が有利である, と.No.3
- 回答日時:
単純に効率の問題だったはずです。
引き算の場合、補数で計算する回路と繰り下がりを実現した回路で、必要クロック数を比較してみて下さい。
補数計算の方が、性能が高いことが分かると思います。
No.2
- 回答日時:
引き算をどう実現するかは機械の勝手で、演算式をどう見るかは人間の勝手です。
機械は機械としてもっとも効率の良い方法で演算を実行するだけです。
繰り上がりのキャリーに対して繰り下がりはボローですね。
概念としてはありますよ。
割り算はソフトウエアで処理しようとすると時間がかかります。
最近ではハードウエア割り算器(回路)などが入っていますので1クロックで処理出来たり、浮動小数点演算なども専用回路に任せる傾向ですね。
かけ算はかなり以前からハードウエア演算器やマイクロコードで書かれたものが使われています。
かけ算も割り算も単純なループで行うと時間がかかります。
プロセッサの能力や命令形によっても異なりますが、一般的にはシフトと加減算を組み合わせて実現します。
メモリ使用量は増えますがテーブル演算方式なんてのもあります。
No.1
- 回答日時:
コンピューターの演算装置の元は半加算器で、これを2つ繋げて全加算器を構成していますが、これが加算しか出来ないので、引き算は2の補数を使っています。
http://wpedia.goo.ne.jp/wiki/%E5%8A%A0%E7%AE%97% …
割り算は多分一番時間がかかると思います。
2の倍数の掛け算でMSB側に1ビットシフト、割り算ではLSB側に1ビットシフトを使っているプログラムがありました。
2の倍数であるかどうかは一番下の桁を参照すればわかりますよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パーセントの計算がまったく出...
-
2の6乗の答えと計算方法
-
300÷1.5=200の計算方法
-
2500を3対2でわける計算式おし...
-
4^0.5乗の答え
-
掛け算と割り算の混じった問題
-
割り算の説明
-
スマホで累乗の指数や、ルート...
-
ゼロに無限大を掛け算したらい...
-
10倍するとゼロを1つ、100倍す...
-
素因数分解で最小公倍数・最大...
-
最も簡単な式?
-
累乗の逆(対数?)の計算方法を教...
-
割引の計算がよく説明と理解が...
-
算術記号で、 ∧ はなんとよむ...
-
÷×の優先順位について
-
以下の条件を満たす100以下の自...
-
~の~乗を計算機を使わずに簡...
-
パーセントの計算を教えて。
-
数学IIIの増減表について質問が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パーセントの計算がまったく出...
-
2の6乗の答えと計算方法
-
累乗の逆(対数?)の計算方法を教...
-
4^0.5乗の答え
-
割り算の説明
-
数学の問題です。一次関数です...
-
2500を3対2でわける計算式おし...
-
掛け算と割り算の混じった問題
-
素因数分解で最小公倍数・最大...
-
「逆数」って、何のためにある...
-
~の~乗を計算機を使わずに簡...
-
AとBの比というのはA/Bの...
-
常用対数を使うと何が便利なん...
-
Excel関数で、Nの1/3乗という...
-
何故2+2×2=6なのか?
-
300÷1.5=200の計算方法
-
2L7dLの答えは9dLであってますか✨
-
代数和ってなんでしょう
-
概念「素数」の日常生活への応用
-
累乗の計算の仕方
おすすめ情報