問題タブ [int64]
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.
c++ - 64ビットタイプを使用しますか?
コンパイラー用にいくつかのハッシュ関数を書いていますが、__int64
データ型を頻繁に使用しています。コンパイラは、さまざまなOSでサポートされることを目的としています(これまでのところサポートされています)。私はそれ__int64
が私のターゲットシステムのためにほとんどの主要なC++コンパイラによってコンパイルできるタイプであることを知っているので、それは問題ではありません。私はハッシュ関数を使用して、大きな文字列をより小さく、より速く比較できるようにしています。これらは64ビット対応のOSで驚異的に機能します。しかし、32ビットOSでは、メリットを相殺するのに十分なパフォーマンスの低下がありますか?32ビット整数を使用することもできますが、ハッシュ関数の効果が大幅に低下します。
編集:それはカスタムコードであり、非常に単純です。最初のハッシュ関数は、12文字の英数字(アンダースコアを含む)から一意の64ビット整数を生成します。次に、クラスは64ビットハッシュのアドレスリンクリストを作成して12文字を超えるハッシュを処理し、比較演算子をオーバーロードします。オーバーロードされた比較は短絡され、アドレスリンクリストを比較します。私は自分のマシンでテストを実行して、ランダムに生成された大きなハッシュ(100〜300文字)の速度を自分自身(最悪の場合のシナリオ)と比較しましたが、文字列の比較よりも高速であることがわかりました。ハッシュ生成のオーバーヘッドをより適切にシミュレートするために、事前に生成された大きなハッシュを自分自身と比較する比較テストも実行しました。これはすべて、コード最適化をオフにして実行されています。ハッシュの比較が約10億であるのに対し、文字列の比較は約10億であり、ハッシュは約16%の時間かかりました。ただし、これはすべて64環境で行われました。テストを実行するための32ビットマシンがありません
c++ - __int64変数を-2500000000に直接設定できないのはなぜですか?
このプログラムは、WindowsXPマシンのVC++6.0で記述されています。
__int64変数を-2500000000に直接設定しようとすると、32ビット値に切り捨てられ、2の補数が取得されます。
この時点で、testvalは1794967293(110 1010 1111 1101 0000 0111 0000 0000バイナリ)に等しくなります。
変数を2500000000に設定してから負の値を掛けると、次のように機能します。
変数testvalは-2500000000(1001 0101 0000 0010 1111 1001 0000 0000バイナリ)に等しくなります。
何か案は?ありがとう。
c# - Int64 は C# の long と同じではありませんか?
私はSqlCeConnectionを介して C# で SQL とデータベースをいじっています。ExecuteReaderを使用して、Longs に読み取られるレコード ID の結果とBigInt値を読み取っています。
今日、私は COUNT ベースのステートメント ('SELECT COUNT(*) FROM X') を使用する SQL ステートメントで遊んでおり、これらの単一値の結果を読み取るためにExecuteScalarを使用しています。
しかし、私は問題に遭遇しました。今まで使用していたLongデータ型に値を格納できないようです。それらを Int64 に格納できます。
レコード ID に BigInt を使用して、潜在的な最大レコード数を取得しています。
したがって、BigInt 8 バイトは Int64 です。どちらも 64 ビットの符号付き整数であるため、Long は Int64 と等しくありませんか?
したがって、Int64 を Long にキャストできないのはなぜですか?
エラーは次のとおりです。
指定されたキャストは無効です。
BigInt を Long に読み込むことができます。問題ありません。SQL COUNT を long に読み込めません。
COUNT は Int (Int32) を返すため、実際には Int32 を long にキャストすることが問題です。
c++ - 64ビットデータ型を使用するには64ビットプロセッサが必要ですか?
少し質問があります:
64ビットデータ型(__int64またはint64_t)を使用するには、64ビットプロセッサが必要ですか?
int64_tの「t」とはどういう意味ですか?
どのバージョンのGCCとVCCがデータ型をサポートしているのですか?
64ビットデータ型はデータ長を2倍にしているだけですか、それとも他にも何かが起こっているのでしょうか。
c++ - int64の低い値または高い値を設定するにはどうすればよいですか?
私はint64のより高い値を次のように取得できることを知っています:
しかし、どうすれば設定できますか?
これで試してみましたが、「式は変更可能な値でなければなりません」と表示されます。
他の値を保持する必要があります(高い値を設定すると、低い値を保持する必要があります)。
c++ - __int64 の乗算
誰かが 2 つの __int64 obj を乗算し、結果が __int64 に収まるかどうかを確認する方法を (詳細に) 説明できますか?
注: コンパイラまたはプロセッサに依存するルーチンは使用しないでください。
delphi - Delphi 6 の巨大なファイルのサポート? (システムモジュールの交換?)
巨大な固定長のレコード データ ファイルを操作する際に問題が発生しています。ファイルのサイズは 14 GB を超えています。System.Filesize()
ファイル内のバイト数と各レコードの長さを考えると、関数からの戻り値が巨大なファイル内の実際のレコード数よりもはるかに少ないのを見て、最初に問題に気付きました。(System.Filesize は、呼び出し中に指定されたレコード サイズを指定すると、型指定されていないファイル内のレコード数を返しますReset()
。ファイル内のバイト数は返しません)。System.Filesize()
Int64 ではなく、倍長整数の戻り値の型までチョークで書きました。
GetFileSizeEx()
自分でレコード数を呼び出して計算することで、最初の問題を回避しました。残念ながら、BlockRead()
オフセットがファイルの奥深くにあるファイル内のレコードにアクセスしようとすると失敗します。コードのどこかでオーバーフローしている値が使用されていると思います。
巨大なファイルを処理でき、システム ユニットのファイル I/O 呼び出しに代わる Delphi 6 の代替モジュールはありますか? できれば自分で転がすのを避けようとしています。
c++ - std::atoll と VC++
std::atoll
fromを使用して文字列をgcccstdlib
に変換しています。int64_t
その機能は、Windows ツールチェーン (Visual Studio Express 2010 を使用) では利用できないようです。最良の代替手段は何ですか?
strings
への変換にも興味がありuint64_t
ます。から取得した整数定義cstdint
。
iphone - _int64 は型に名前を付けません
私のpchファイルには、次の定義があります。
アプリケーションをビルドすると、エラーが発生します
これは、 _int64 が type に名前を付けていないことを示しています。何が問題なのですか?
sql-server-2008 - ADO.NET で SQL Server の日時を C# int64 に変換するにはどうすればよいですか?
datetime は SQL Server で 64 ビットとして格納されるため、SQL Server の datetime フィールドから読み取り、int64 として格納したいと考えています。私はこれに似たようなことをしますか?