問題タブ [uint64]

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 投票する
1 に答える
167 参照

.net - N < 2^63 の素因数分解アルゴリズムの BigInteger を UInt64 に置き換える

Pollard の Rho と Brent のアルゴリズムの両方を使用して、BigInteger を使用して VB.Net に実装された素因数分解の優れたソリューションがあります( https://stackoverflow.com/a/31978350/44080を参照) 。

N< 2^63私は、十分に大きく、おそらく (はるかに? ) 高速UInt64であるべきだと信じています。

ただし、私のUInt64変換は次の行で失敗します:

この行を次のように変更します

y = CULng((CDbl(y^2) Mod n + c) Mod n)

型変換がループしているため、パフォーマンスが低下します。

どうすればこれを修正できますか?

上記の問題を回避できれば、UInt64 は BigInteger よりも優れたパフォーマンスを発揮すると思います。

編集:

私はちょうどこれを見つけました:.Net BigIntegerを実行するInt128とInt256を持っていると主張するDirichlet .NET Number Theory Library 。

素数因数分解用に最適化されたアルゴリズムもいくつかあります。2 日間の調査とテストを節約できたはずです。

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

java - Objective-C でバイト配列を UInt64 に変換する方法

これまでのところ、受信した 8 バイトを UInt64 に変換するために行ったことは次のとおりです。

データを 8 バイトのデータに変換する送信者は、次のようにしました。

受信した 8 バイトのデータ データは次のとおりです。

01 00 00 00 00 00 00 3b

私の方法の出力は次のとおりです。

16777216

この「16777216」を計算機を使用してバイトに変換しようとしたところ、次のようになりました。

01 00 00 00 00 00 00

これは、3b が変換に含まれていないことを意味します。

しかし、Javaでこのコードを試してみましたが、うまくいきました。どこに問題があるのか​​わからない。

助けてください。前もって感謝します!

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

ocaml - OCaml で uint パッケージを使用する - opam

opamをインストールし、uint パッケージをインストールしましたしかし、私がこのようなことをしようとすると

エラーが発生します

私が見逃している可能性があるものについて何か提案はありますか? 私はOCamlとopamが初めてです

次のステートメントを使用して、OSX ターミナルでコードをコンパイルしました。

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

javascript - Uint8Array(8) 文字列化

バックエンドから ArrayBuffer に符号なし 64 ビット整数を取得しています。IEEE 754 が原因で、このシーケンスを数値として取得して保持することはできません。この膨大な数を「文字列化」する方法はありますか?

手短に:

前もって感謝します。

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

c - 特定のビット演算を実行中に uint64_t の上位 32 ビットが 1 になるのはなぜですか?

uint64_tケース番号#2でaの上位32ビットが1に設定されている理由を誰かに説明してもらえますか:

出力:

https://ideone.com/xKUaTe

同じ動作を示さない「同等の」32ビットバージョン(ケース#3および#4)を提供したことに気付くでしょう...

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

c - C for ループほぼ右

私は、再帰的な解決策を問題とその反復的な対応物と比較することを含む宿題の問題に取り組んでいます。現在、指定された値のセットに対して再帰関数が機能していますが、反復バージョンは最後の値以外のすべての値に対して機能するようで、奇妙に思えます。

反復関数は次のとおりです。

他の関連情報は

再帰関数を実行すると、他のクラスメートと確認した最終値の答え 424171147 が得られます。アルゴリズムが以前のすべての値では機能するのに、最終的な値では機能しない理由について、私は混乱しています。どんな助けでも大歓迎です。

余談ですが、反復バージョンが非常に非効率的であることは認識しています。これが割り当てのポイントです。

ここで要求されているのは再帰関数です

また、n は宣言時に 1 として初期化されます。

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

c++ - numeric_limits と比較する方法::分()

符号 (+1または-1) が既知であり、符号なし整数を解析するコードがあると考えてください。その符号なし整数は と等しくなる可能性があります-numeric_limits<int64_t>::max()。未定義の動作をトリガーせずに正しく比較するには?

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

objective-c - Swift は、独自の UInt64 型を使用するのとは異なる C の uint64_t を変換します

(Objective-)C から Swift にアプリケーションを移植中ですが、C で記述されたサードパーティ フレームワークを使用する必要があります。 UInts などとしてのフレームワークの機能。そのため、Swift アプリケーション全体で一定のキャスト操作を回避するために、C ヘッダー ファイルを Swift に転送することにしました。すべてのタイプを 1 か所に配置する必要があるためです。

ほとんどすべてを転送でき、多くのハードルを克服しましたが、これは次のとおりです。

C ヘッダーは、特に uint64_t 変数を含む構造体を定義します。この構造体は、データをポインターとしてコールバック関数に転送するために使用されます。コールバック関数は引数として void ポインターを取り、UnsafeMutablePointer 操作でそれを構造体 (または、適切な場合はヘッダーの別の構造体) の型にキャストする必要があります。インポート時に Swift によって自動的に変換された C ヘッダーの元の構造体を使用する限り、キャストとメモリ アクセスはすべて正常に機能します。

ただし、Swift で構造体を手動で複製しても、「バイト フィット」しません。

この状況の縮小された例を示しましょう。

CApiHeader.h ファイル内には次のようなものがあります。

私の理解では、これはSwiftに相当するはずです

または、このタプル表記も機能するはずです

これは正常に機能しますが、UInt64 タイプがあるとすぐには機能しません。

さて、どうなる?

私自身の Swift MyStruct 実装の 1 つにポインターをキャストすると、UInt64 フィールドから始まるホール データが 2 バイトずつシフトされます。したがって、この例では、両方のarrフィールドが正しい位置にありませんが、UInt64 ビット内にあり、その数は 64 である必要があります。したがって、UInt64 フィールドには 48 ビットしかありません。

これは、 UIn64 変数をこの代替に置き換えると、私の観察と一致します

またはこれ

(または同等のタプル表記) arrフィールドを正しく配置します。ただし、 var02は複数のアドレス範囲に分割されているため、直接使用できるデータが含まれていないことは容易に推測できます。最初の選択肢では、Swift が予約フィールドとvar02フィールドの間のギャップを 16 ビットで埋めているように見えるため、さらに悪化します。

そのため、Swift での C 構造体の同等の変換はわかりませんでした。

ここで正確に何が起こり、Swift は実際に C ヘッダーから構造体をどのように変換しますか?

ヒントや説明、あるいは解決策を教えてください。

アップデート

C フレームワークには、次のシグネチャを持つ API 関数があります。

MessageHandlerProc はプロシージャ タイプです。

したがって、setHandlers はフレームワーク内の C プロシージャであり、コールバック関数へのポインターを取得します。このコールバック関数は、void ポインターの引数を提供する必要があります。

Swift は、convention(c) 構文を使用して messageHandlerProc をインポートできるほどスマートなので、プロシージャ タイプを直接使用できます。一方、標準の func 構文を使用して messageHandler コールバック関数をこの型にビットキャストすることはできません。そこで、クロージャー構文を使用してコールバック関数を定義しました。

上記の構造を元の投稿のさまざまな構造に変換しました。

そしていいえ!統計を Swift Array として定義しても機能しません。Swift の Array は拡張型であるため、Swift の Array は C の Array と同等ではありません。ポインターを使用して書き込みおよび読み取りを行うと、例外が発生します

ここに画像の説明を入力

タプルのみが Swift でネイティブに実装されており、その上でポインターを使用して前後に実行できます。

わかりました...これはすべて正常に機能し、データが利用可能になるたびにコールバック関数が呼び出されます。

したがって、 myMessageHandler内では、void ポインターである msgArgPtr 内に格納された Data を使用したいため、 DeviceState にキャストする必要あります

次のような状態にアクセスします。

自動生成されたDeviceStateの Swift ペンダントを使用すると、すべてうまく機能します。time 変数には Unix タイム スタンプがあり、次の統計 (タプル構文でアクセス可能!!!) はすべて、それらが属する場所です。

ただし、手動で実装した構造体を使用すると、完全に無意味なタイムスタンプ値になり、統計フィールドが左にシフトされます (時間フィールドに向かって - 統計「配列」からのビットが含まれているため、タイムスタンプ値が役に立たないのはおそらくそのためです)。 . したがって、stats の最後の 2 つのフィールドでは、compoundValueOldと最初のフィールドから値を取得します - もちろんすべてオーバーフローします。

時間の値を犠牲にして、UInt64 変数を 2 つの UInt32 型のタプルで変更するか、それを UInt32 型に変更してtimeの直前に UInt16 型の補助変数を追加することを厭わない限り、統計を受け取ります」 array" を正しい位置合わせにします。

良い1日を!:-)

マーティン

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

c# - C# uint64 -- データを保存しますか?

数値データを uint64 に格納するより良い方法はありますか? (合計 20 桁)

構造体またはクラスを作成するオーバーヘッドなしで、オブジェクトに関する情報を格納しようとしています。最小限のオーバーヘッドでできるだけ速く取得/設定する必要があります。

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

c - バイナリの大きな数

引数に 80 ビットの整数を取り、それをバイナリに変換してから、いくつかのビット シフト操作を行う必要があります。このスニペット (正常に動作するようです) を使用して、引数を保存します。

次に、この関数を使用してバイナリに変換したいと思います。

しかしその後:

ビットシフト演算子を使用する必要があるため、で動作するソリューションが必要<<です。