問題タブ [bigint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
11355 参照

c - 2進数を10進数に変換する最速の方法は?

符号なし 128 ビット整数をリトルエンディアン順で表す 4 つの符号なし 32 ビット整数があります。

この数値を 10 進文字列表現に変換し、ファイルに出力したいと思います。

現在、bigint_divmod10関数を使用して数値を 10 で除算し、剰余を追跡しています。この関数を繰り返し呼び出して、数値がゼロになるまで余りを数字として出力します。かなり遅いです。これが最速の方法ですか?もしそうなら、私が見ていないこの機能を実装する賢い方法はありますか? GMP を調べてみましget_str.cたが、かなり難解です。

編集: divmod10 関数について思いついた最速のコードは次のとおりです。

add 関数は次のように定義されます。

0 投票する
3 に答える
7229 参照

java - Java /ScalaBigInteger貼り付け

JavaBigIntegerクラスに問題があります。大きな値をに貼り付けることができませんBigIntegerBigIntegerたとえば、次の番号にを割り当てたいとします。

コンパイラは整数と見なすため、直接割り当てることはできません。

しかし、私はそれをにしたいと思いますBigInteger。これをソースコードに直接貼り付ける方法はありますか?

そのような方法がない場合、BigIntクラスをはるかに使いやすいScalaに方法はありますか?

0 投票する
12 に答える
262134 参照

c# - C#のbigintに相当するものは何ですか?

SQL Serverデータベースにとって重要なC#の値を処理するときに何を使用する必要がありますか?

0 投票する
3 に答える
2640 参照

c++ - float を bigint に変換します (別名、バイナリ指数と仮数を取得するポータブルな方法)

C++ には、任意のサイズの整数を保持できる bigint クラスがあります。

大きな float または double の数値を bigint に変換したいと思います。私は作業方法を持っていますが、それは少しハックです。IEEE 754 数値仕様を使用して、入力数値の 2 進符号、仮数、および指数を取得しました。

コードは次のとおりです (Sign はここでは無視されますが、重要ではありません)。

動作しますが、かなり醜く、移植性がどの程度かわかりません。これを行うより良い方法はありますか?float または double からバイナリの仮数部と指数部を抽出する、より醜く移植性の低い方法はありますか?


答えてくれてありがとう。後世のために、frexp を使用したソリューションを次に示します。ループのために効率が低下しますが、float と double の両方で機能し、reinterpret_cast を使用せず、浮動小数点数表現の知識に依存しません。

0 投票する
1 に答える
752 参照

c - bigintライブラリをどのように作成しますか/libgmpはどのように機能しますか?

さまざまなプラットフォームでのC用のBigIntライブラリの数とその使用方法を知っていますが、興味をそそられます。それらはどのように機能するのでしょうか。自分のライブラリを構築するにはどうすればよいでしょうか(試してみるつもりはありません。車輪の再発明をする意味はありませんが、それがどのように行われるかに興味があります)。手順/基本を説明する可能性のあるチュートリアルなどを誰かに教えてもらえますか?

ありがとう、

ナインフィンガー。

0 投票する
3 に答える
3616 参照

facebook - facebook connect uid mysqlストレージの問題

Facebook Connectの統合を行っています。Facebook php ライブラリを使用して uid を取得します。

$facebook = 新しい Facebook($api_key, $secret); $fb_user = $facebook->require_login();

$fbuser は、1000002949493949 などの 16 文字の bigint です。

ただし、この値をmysqlに挿入すると、2949493949のみが挿入されます

そのため、後で uid をデータベースに保存されている 1000002949493949 と一致させようとすると、データベースが 2949493949 を返しているため、一致しません。

私のデータベースの uid フィールドは、長さ 20 の bigint です。もともとは int でしたが、新しい長い uid に遭遇し始めたときに変更しました。

uidを正しく保存するために何をする必要があるか考えていますか?

0 投票する
1 に答える
2177 参照

math - MIPSの多倍長演算

ネイティブMIPSに多倍長演算を実装しようとしています。1つの64ビット整数がレジスター$12と$13にあり、別の整数がレジスター$14と$15にあると仮定します。合計はレジスター$10と$11に入れられます。64ビット整数の最上位ワードは偶数番号のレジスターにあり、最下位ワードは奇数番号のレジスターにあります。インターネット上では、これが可能な限り最短の実装であるとのことです。

正しく理解していることを再確認したいだけです。sltuは、2つの最下位ワードの合計がオペランドの1つよりも小さいか等しいかどうかをチェックします。この場合、キャリーが発生したよりも、これは正しいですか?

2つの最も重要な単語を追加するときにキャリーが発生したかどうかを確認し、結果を$ 9に格納するには、次のことを行う必要があります。

これは意味がありますか?

0 投票する
5 に答える
4204 参照

c++ - C++ BigInt 乗算の概念上の問題

私のプログラミング言語で使用するために、C++ で小さな BigInt ライブラリを構築しています。

構造は次のようなものです。

文字列を単一の文字に分割してdigits.

桁の数字がすべて逆になっているため、数字の 123 は次のようになります。

私はすでに完全に機能する追加機能をコーディングすることができました。

次のように動作します。

(この場合、オーバーフローは 1 に 9 を足したときに起こることです: 10 から 10 を引き、オーバーフローに 1 を足し、オーバーフローは次の桁に足されます)

次のように、2 つの数値がどのように格納されるかを考えてみましょう。

上記digitsは、bigint 2 (A) と 100 (B) を表しています。 -は初期化されていない数字を意味し、アクセスされません。

したがって、上記の数値を追加すると問題なく動作します: 0 から開始し、2 + 0 を追加し、1 に移動し、0 を追加し、2 に移動し、1 を追加します。

しかし:

上記の構造で乗算を実行したい場合、私のプログラムは次のようになります。

0 から開始し、2 に 0 を掛けて (eek)、1 に進みます。

したがって、乗算の場合、次のような順序を取得する必要があることは明らかです。

次に、すべてが明確になります: 0 から開始し、0 に 0 を乗算し、1 に移動し、0 に 0 を乗算し、2 に移動し、1 に 2 を乗算します。

  • digitsどうすれば掛け算の正しい形式に入ることができますか?
  • 配列の移動/反転はしたくありません - パフォーマンスが必要です!
0 投票する
3 に答える
1581 参照

sql-server - SQL Server 関連テーブルで主キーを GUID から BigInt に変更する方法

GUID 主キーを持つ 1000 万から 2000 万行の 2 つのテーブルと、少なくとも 12 のテーブルが外部キーを介して関連付けられています。ベース テーブルには、それぞれ 10 ~ 20 のインデックスがあります。

GUID から BigInt プライマリ キーに移行しています。誰かがアプローチに関する提案を持っているかどうか疑問に思っています。今考えている方法は次のとおりです。

  1. 関連するすべてのテーブルのすべてのインデックスと fkey を削除します。
  2. 各テーブルに「NewPrimaryKey」列を追加します
  3. 2 つのベース テーブルでキー ID を作成する
  4. データ変更のスクリプトを作成する "テーブル x を更新し、NewPrimaryKey = y を設定します。ここで、OldPrimaryKey = z
  5. 元の主キーの名前を「oldprimarykey」に変更します
  6. 「NewPrimaryKey」列の名前を「PrimaryKey」に変更します
  7. すべてのインデックスと fkey をスクリプトで戻す

これは良いアプローチのように思えますか? これに役立つツールまたはスクリプトを知っている人はいますか?

TD: 追加情報ごとに編集。GUID がプライマリである場合のアプローチに対処するこのブログ投稿を参照して ください。 /Default.aspx