• ベストアンサー

除算を使わずに10で割りたい。

colderの回答

  • colder
  • ベストアンサー率43% (30/69)
回答No.14

負数には、対応していない。 int div10(int x) { int y = ((((x>>3)+x)>>1)+x)>>4; int t; do{ t = x-(((y<<2)+y)<<1)+1; y += ((((t>>3)+t)>>1)+t)>>4; } while(t > 10); return y; }

kenji_aki
質問者

お礼

回答ありがとうございます。 一応プログラム動かして確認してみました。 どういったアルゴリズムなのかちょっと理解できていませんが じっくり考える前にお礼を言わせて頂きます。 ありがとうございました。

関連するQ&A

  • 加算と減算で乗算と除算を表現したい

    C言語の勉強をしている者です。 現在、Cを使って簡易電卓を作ろうと取り組んでいる最中なのですが、 テキストの中で乗算と除算を「*」、「/」を使わずに表現しろとの記載がありました。 乗算はループで加算を繰り返すことで理解できているのですが、除算の方法について浮かびません。 どうぞ知恵をお貸しください。

  • 情報処理の質問です

    加算演算のみで、減算・乗算・除算する方法を詳しく説明するとしたら、どのように答えますか? よろしくお願いします。

  • [2進数 シフト演算 除算について]

    [2進数 シフト演算 除算について] シフト演算について勉強中です。ご協力お願い出来たら幸いです。 乗算について例えば『1010』(符号ビットを考えず)を2倍 4倍 8倍(2のn乗)した場合 ビットを2倍であれば1つ、4倍であれば2つ・・・左に シフトすれば良いというのは理解しました。 また3倍 5倍などのケースも、 3倍であれば1ケタ左にシフトした数+1010で求まる事も理解しました。 問題は除算です。他の質問を探ってみたのですが、考え方は一緒という回答で・・・詰まっています 除算は右シフトとの事ですが 先ほどの例である『1010』(10)ですがこれを1/2、つまり2で割ると 1つ右にシフトし1010→0101 となり 1010を1/4する場合右に2ビットシフトし 1010→0010.10 となり理解は出来ます。 しかし1/3 、1/5といった場合の計算の仕方が分かりません。 余りを出さないという考えで(近似値になると思いますが) 解き方をご教授願えたらと思います。

  • コンピュータにおける負数について

     次の問題を教えてください! 「コンピュータで負数を表すのに補数を用いている理由として正しいのはどれか??」 (1)加算を減算で処理することができる。 (2)減算を加算で処理することができる。 (3)乗算を加算とけたシフトで処理することができる。 (4)除算を減算とけたシフトで処理することができる。  どなたかお詳しい方,簡単で結構ですので理由も添えて お教えください。  ちなみに負数は「マイナス」ですよね?では,補数って何ですか??これも教えて下さい。  宜しくお願い致します。

  • 剰余演算を論理演算と加減算に置き換える方法

    剰余(割算の余り)を求める演算を論理演算と加減算とビットシフトのみで行う方法がありましたら教えてください。 言語はC/C++ではなくても大丈夫です(ロジックだけでも)。

  • 16ビットCPUで32ビットの計算方法

    16ビットのCPUを持つシーケンサ(PLC )で32ビットの四則演算(加算、減算、乗算、除算)をさせたいのですが、命令語にダブルワードを処理できるものがないので、演算がオーバーフローした情報から何かしら自分でプログラムを組まなければなりません。 16ビットのレジスタを使った32ビット演算の考え方を教えてください。

  • 基本情報技術者過去問

    1)負数を2の補数で表す8ビットの数値がある。この値を10進数で表現すると-100である。この値を符号なしの数値として解釈すると、10進数で幾らか? ア)28 イ)100 ウ)156 エ)228 2) 多くのコンピュータが、演算回路を簡単にするために補数を用いている理由はどれですか。 ア)加算を減算で処理できる イ)減算を加算で処理できる ウ)乗算を加算の組み合わせで処理できる エ)除算を減算の組み合わせで処理できる

  • 10進のマイナスの計算について

    10進のマイナスを2進にする方法 10進のマイナスで少数のものを2進にする方法 を教えてください 方法にも減算、加算、除算、乗算とありますが 一番分かりやすいものをお願いします いろいろと調べているのですが どうしてもわかりません 例をだしていただけるとありがたいです 

  • Javascriptで算術演算子を作っているのですがわかりません・・・

    あの、JavaScriptの課題で、算術演算子つくり、加算、減算、乗算、除算、整数の除算の商と余りが求めれるように、a bにそれぞれ数値を代入して計算開始というのを作りました。それで、数値以外のたとえば、アルファベットなどを代入した場合、それは数値ではありません、数値を代入してくださいというような数値の入力を促すようになるようにしたいのですが、エラーばかりでます。どのようにソースを打ったら良いのかさっぱりわかりません。教えてください!!よろしくおねがいします。

  • 配列128桁の加算、減算について。

    現在C言語で四則演算について勉強しています。 128桁の配列をもつ整数についてa,b,各桁を加算、減算するプログラムを書きたいのですが分からなくて困ってます。できればCのソースを教えて欲しいですおねがいします。  s = 65536 a[128],b[128],c[128]   i = -1 とする。  i <128 である限り、演算を実行。 i >127なら終わり。(++1) c(i) = a(i) - b(i)という演算を行う。 c(i) < 0 の場合 s を借りてくる。 c(i)に s を加算し、上の桁から1を引く。