問題タブ [128-bit]

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 に答える
7090 参照

64-bit - 64ビットマシンでの符号なし128ビット除算

128ビットの数値を2つの64ビットの数値(「Hi」と「Lo」)として格納しています。32ビットの数値で割るだけです。CPUからのネイティブ64ビット演算を使用して、どうすればそれを行うことができますか?

(任意精度のライブラリは必要ないことに注意してください。ネイティブ操作を使用してこの単純な除算を行う方法を知っておく必要があります。ありがとうございます)。

0 投票する
9 に答える
116425 参照

performance - 64 ビット プログラムは 32 ビット バージョンより大きくて高速ですか?

私は x86 に焦点を当てていると思いますが、一般的には 32 ビットから 64 ビットへの移行に関心があります。

論理的には、場合によっては定数とポインターが大きくなるため、プログラムが大きくなる可能性があることがわかります。また、効率のために単語境界にメモリを割り当てたい場合は、割り当て間の空白が増えることになります。

また、x86 の 32 ビット モードでは、4G アドレス空間が重複している可能性があるため、コンテキストの切り替え時にキャッシュをフラッシュする必要があると聞いています。

では、64 ビットの本当のメリットとは何でしょうか?

補足質問ですが、128ビットの方が良いでしょうか?

編集:

初めての 32/64 ビット プログラムを作成しました。16 バイト (32b バージョン) または 32 バイト (64b バージョン) オブジェクトのリンク リスト/ツリーを作成し、stderr に多くの出力を行います。

サイズ: 81128(32b) v 83672(64b) - それほど大きな違いはありません

速度: 17 秒 (32b) v 24 秒 (64b) - 32 ビット OS (OS-X 10.5.8) で実行

アップデート:

64b であるが 32b ポインターを使用する新しいハイブリッド x32 ABI (Application Binary Interface) が開発されていることに注意してください。一部のテストでは、32b または 64b よりもコードが小さくなり、実行が高速になります。

https://sites.google.com/site/x32abi/

0 投票する
4 に答える
1370 参照

c - 128 ビットの数学演算を行うライブラリまたはその他の方法はありますか?

私は暗号化アプリケーションを作成しており、128 ビット整数を扱う必要があります。

標準の加算、減算、乗算、除算、および比較に加えて、累乗およびモジュロ関数も必要です。

これを行うことができるライブラリまたは他の実装を知っている人はいますか? 128 ビットでない場合、64 ビットのオプションはありますか?

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

c# - 長いシリアル番号 (10 バイト) を格納するための DataType

アプリケーションに読み込まれ、.net データ型に格納される必要がある 10 バイトのシリアル番号を持つデバイスがあります。デバイスでは、符号なしの 10 バイト (80 ビット) の数値として格納されます。この数値に対して数学演算を実行することはないと思いますが、ユーザーに表示するだけです。

.NET フレームワークには、このデータ型を格納する UNIT128 が組み込まれていません。このデータ型を格納するための私の提案は、10 要素のバイト配列を作成し、データをこの配列に読み込むことです。この問題に対するより良い解決策はありますか?

注:この質問で、GUID は 128 バイトの符号付き整数であることがわかりましたが、この方法で GUID を使用するのはお勧めできません。他の提案はありますか?

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

java - Java または C++ で 128 ビット整数を表現するにはどうすればよいですか?

JavaまたはC++で128ビット整数を持つことは可能ですか?

0 投票する
2 に答える
12745 参照

c - gccはamd64で128ビットintをサポートしていますか?

gccはamd64で128ビットintをサポートしていますか?

それを定義する方法は?

scanf / printfを使用して読み取り/書き込みを行う方法は?

0 投票する
2 に答える
4216 参照

c - C の x64 での 128 ビット演算

x86 で bignum を実装する場合、明らかに最も効率的な桁サイズの選択は 32 ビットです。ただし、桁サイズの 2 倍までの算術演算が必要です (つまり、32+32=33、32*32=64、64/32=32)。幸いなことに、x86 はこれを提供するだけでなく、移植可能な C ( uint64_t) からもアクセスできます。

同様に、x64 では 64 ビットの数字を使用することが望ましいでしょう。これには 128 ビット演算が必要です (つまり、64+64=65、64*64=128、128/64=64)。幸いなことに、x64 はこれを提供します。残念ながら、ポータブル C からアクセスすることはできませんが、明らかにアセンブリに浸ることはできます。

私の質問は、移植性のない C からアクセスできるかどうかです。x64 の C コンパイラはこれにアクセスできますか? もしそうなら、構文は何ですか?

(32 ビットまたは 64 ビット ワードのコレクションとして厳密に扱われ、その間にキャリー伝搬がない 128 ビット ベクトルについて話しているのではなく、実際の 128 ビット整数演算について話していることに注意してください。)

0 投票する
4 に答える
5185 参照

c - gcc <4.4で128ビットシフトを行う方法はありますか?

gcc4.4 が追加された最初のバージョンのようint128_tです。ビット シフトを使用する必要があり、いくつかのビット フィールドのスペースが不足しています。

編集: 32 ビット コンピューターを使用している可能性があります。32 ビット コンピューター (Intel Atom) 用にそれを使用する方法はありません。ビットシフトで期待どおりに動作する場合、トリッキーで遅いマシンコードが生成されてもかまいません。