• ベストアンサー

C言語の四則演算について

tadysの回答

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.4

No.3さんと同じ意見です。解説が無いのであれば取り上げる必要も無いのです。 高機能のCPUでは乗算回路や除算回路を採用している場合がありますがローコストのCPUでは加減算しかできないものも多いのです。 こういうCPUでは乗除算を加減算で行う必要があります。 掛け算は足し算の繰り返しですので足し算で出来ます。 例えば2x5=2+2+2+2+2です。 割り算は何回引き算が出来るかで計算できます。 例えば7÷2は 1回目 7-2 = 5 2回目 5-2 = 3 3回目 3-2 = 1 これ以上引けないので答えは3で余りが1 ただし、これらの方法では効率が悪いのでシフトと加減算を利用する方法を利用します。 これらの計算法は原理的には筆算で行う方法と同じです。ただし表現は2進数が対象になります。 2x5の場合、2進数では10x101です。   10 x 101 ____   10   00 + 10 ____ 1010 =10(10進数) 割り算は多少複雑です。割り算の場合、最初に割る数と割られる数の最上位の桁が合うように割る数をシフトしておきます。 例えば10÷3の場合は 1回目1010    -1100    (10進の3。桁合わせの為に0を挿入しています) _________ 余り  1010    引けない。 商は0 2回目1010    -0110 _________ 余り  0100    引けた。 商は01 3回目0100    -0011 _________ 余り  0001    引けた。 商は011 答えは 商3、余り1です。 実際には最初にシフトした分の補正などが必要になります。 参考URLにはマイクロチップのCPUのMATHルーチンを示しておきます。

参考URL:
http://ww1.microchip.com/downloads/en/AppNotes/00544d.pdf
kyocyan
質問者

お礼

tadysさん、凄いです。 プログラマー入門者の私では、まだ理解不能です。 ただ漠然とそうなのか~という感じです。 このご回答は保存して、勉強が進んでからまた熟読させていただきます。 ありがとうございました。

関連するQ&A

  • C言語での複素数の四則演算について

    C言語で、大きさ2の配列を2つ使って、複素数の四則演算のプログラムを作るのですが、配列をどう使うか分からず手が出せない状態です。 C言語を始めたばかりですので、基礎的なことしか分かりませんが、回答お願いします。

  • 四則計算

    四則計算(足し算、引き算、掛け算、割り算) 1・3・9・10で24にする方法を教えてください。

  • C言語の四則演算

    C言語で次のようなプログラムを作りたいのですが ソースを教えていただけないでしょうか? 四則演算のみの計算式を標準入力から受け取り計算式の通りに計算を行い計算式と答えを標準出力に出力する どなたか教えてください

  • C言語で四則演算を使って結果が10になる数式

    C言語のプログラミングについて質問です。 四つの一桁の数字を入力して四則演算を使って結果が10になる数式を作りたいのですが、イメージが湧きません。 教えていただけますか? 例:1234enterkey 答え2*3+1*4 数値の変数はint型でお願いします。int型ですので小数点以下を使って10になる結果は出さなくて宜しいです。お願いします。

  • c言語で四則演算の問題をランダムでだしたいです

    c言語で四則演算の問題をランダムでだしたいです。 学校の課題でだされていて誰か助けてください

  • コンピュータはなぜ減算ができないのか?

    たとえば コンピュータでは2-1を補数を利用して計算します。 しかし、繰り下がりの概念があれば以下のように 直接計算できるはずです。    0010 -) 0001 -----   0001 元々コンピュータには、繰り下がりに対応する演算回路が ないので、引き算が足し算のように簡潔にできない と思ってよいのでしょうか? また、掛け算は足し算のループを利用して計算しているのでしょうか? 割り算は、2の補数(ビット反転+1)の引き算をループさせて実現しているのでしょうか? ということは、計算のうち割り算が一番時間がかかると思ってよいのでしょうか?

  • 二進法での四則演算の方法

    コンピューターは二進法といって"0"と"1"だけの算数をする・・・ と子供に教えたところまではよかったのですが 「どんな風に計算するの?」と聞かれててんぱってしまいしました。 確か、1+1=10、10+1=11, 11+1=100のようにすると思っていましたが 全く自信がありません。足し算、引き算はまだ良いとして 掛け算、割り算はさっぱりわかりません。 親父の威厳を保つため、どなたかわかりやく教えていただけると 助かります。

  • 掛け算・割り算を先に計算する理由

    四則演算の際、 >「掛け算」、「割り算」を先に計算して、後で「足し算」、「引き算」を計算する という計算ルールがあるのですが、なぜそんなルールがあるのでしょうか? 「掛け算」、「割り算」を先に計算するのかっていう理由を説明出来る人は非常に少ないと思われますが、理由を教えてください。 「単位」をそろえる為にあるのでしょうか? よろしくお願いいたします。

  • 高校数学までの範囲で演算というものは何種類ある

    のでしょうか。たとえば、足し算、引き算、掛け算、割り算は同じ一つの演算となるのでしょうか。微分積分は違う種類になるのでしょうか。

  • 化学の四則演算、乗数に困った!!

    大学受験に向けて化学を勉強しているものです。 四則演算に困ったので数学カテで質問しますが、本当は化学の問題です。 どちらの分野にも明るい方からの回答をお待ちしています。 以下解説からの抜粋です。 アボガドロ定数を求める問題です。 アボガドロ定数をNmol^-1とすると、4.090×10^-7molが2.570×10^17個にあたる。 よってその比は 1:N=4.090×10^-7:2.570×10^17 ◆質問 1.Nを求めるには、どうやって計算したらいいのでしょう。 特にマイナスの乗数になっているところがわかりません。 2.Nmol^-1の意味がわかりません。N^-1molとはどう違うのですか? 3.また4.090×2.570の掛け算は、ふつうに3ケタ・3ケタの掛け算をして解いていますがもっと早い方法なんかはありますか?