質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.98%

  • C

    3086questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C言語でオーバーフローの回避

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 247

tanukitii

score 8

C言語は16桁くらいの数をこえるとオーバーフローを起こすので、それを回避する方法を考えています。
今まではそれがどうしても思いつかないのでJavaのBigIntegerクラスを使っていました。しかし、クラスから値をとると計算スピードが落ちるのでC言語を用いてどうにかして、この問題を回避したいのです。

ちなみに演算は四則演算や指数計算、剰余を求める計算をできるようにしたいです。
宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

  1. GCC拡張の__int128を使う。ただし、せいぜい倍の桁までしか対応できない。(GCCだけかと思ったら、VC++にもあるっぽい)
  2. GNU MPのような多倍長整数ライブラリを使う。(C++でもよければBoost.Multiprecisionも可)
  3. GNU MPのような多倍長整数ライブラリでやっていることを自分で実装する。(その他、PythonやRubyの多倍長整数の実装を参考にするという方法もあります。)

なお、いずれの方法もlong long等と比べてかなり遅くなります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/09 22:41

    なるほど、これを使ってがんばってみます!

    キャンセル

0

こんにちは。

多倍長演算ライブラリを使うと良いと思います。
色々あるようです。

多倍長整数演算ライブラリ (GNU MP)
多倍長演算(整数)

C/C++向け多倍長整数資料を探している人のためのガイド

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/09 22:42

    初めてしりました!
    これを勉強してみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    スマートフォンアプリの審査後の最終テスト

    スマートフォンアプリのアプリストア公開後のテストに関してです。 スマートフォンアプリを開発中は、 実機でデバッグなどをしていると思います。 しかしながら、 最終的にどういった動

  • 受付中

    ホームページ作ってくださいからの流れについて💛

    ♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡o。.。o♡ 「ホームページ作って💛」 って依頼されてから、 「できたよ💛」 って見せる(納品)までの

  • 解決済

    ビジネスロジックとは

    PHPの参考書(php 逆引きレシピ 474p)にビジネスロジックという聞きなれない言葉がありました。 それによれば、入出力データの加工を指すようですが、さっぱり意味が解りません。

  • 解決済

    キューにデータがあるのに、キューカウントが0件?

    お世話になります。C#にて、キュークラスを利用しプログラミングを行っております。構築したプログラムにて、以下のような処理にてキュー取得ができない?事象が発生しております。 以下処

  • 解決済

    BlueGiga製BLED112を利用したBLE接続について

    はじめまして。 早速で申し訳無いのですが、、、、 現在、BLE通信をするアプリケーションを検討しており、そこで利用する Bluetoothモジュールとして、「BLED11

  • 解決済

    ソースコードについて

    javaなどのソースコードは、すべて覚えていかなくてはならないのですか? また、コードを覚えるには、手で書いて覚えていくのが一番ですか? 皆さんはどうやって覚えてますか? *

  • 解決済

    クックパッドはRailsで作られたと知りユーザ認証はどのようなgemで作られていますか?

    gemでなければ、一からユーザ認証(登録・ユーザ編集・ユーザ削除)を作っているのでしょうか? 疑問になったのでどなたかご教授願います。

  • 受付中

    UIAlertViewをshowした時のクラッシュ原因

    私がapple storeで公開しているiOSアプリのクラッシュログを解析して、  クラッシュの原因を特定しようとしています。クラッシュは私の端末ではなくユーザの端末で発生してい

同じタグがついた質問を見る

  • C

    3086questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。