問題タブ [unsigned-long-long-int]
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.
swift - Swift の Double からの Unsigned Long Long
私はObjective-Cで以下を使用していました:
私の迅速なコードでは、現時点では次のとおりです。
ただし、意味double
のある a に変換できないというエラーが表示されCUnsignedLongLong
ます。ただし、Objective-C のようにキャストする方法はありますか? これを回避する方法はありますか?
encryption - 17 桁の数字をより小さな 9 桁 (またはそれ以下) の数字に暗号化/圧縮する
17 桁であることが保証されている unsigned long integer(8 バイト) があり、最大で 9 桁の int(4 バイト) に格納したいと考えています。基本的に、情報を失うことなく番号を取得できるように、番号を暗号化または圧縮したいと考えています。
c++ - 10^10 ~ 10^11 の範囲の数値のデータ型は何ですか?
次のように数値をループする次のコードがあるとします。
ここで、特定の条件チェックに基づいてi
、範囲の間にa を出力する必要があります。3*pow(10,p)<= i <6*pow(10,p)
コードは正常に動作しますupto p=8
が、その後かなり遅くなり、コンパイラが行き詰まるようですp=9,10,11
。問題は正しいデータ型を使用することにあると思います。ここで使用する正しいデータ型は何ですか?
このループの目的は、範囲内の適切な数値を見つけることです。適切な数字の条件は次のとおりです。1) 数字として 3、5、またはその両方。他の数字は使用できません。2) 3 の出現回数は 5 で割り切れる。 3) 5 の出現回数は 3 で割り切れる。
注:unsigned long long int
ここで使用しました(0 to 18,446,744,073,709,551,615)
。私は32 ビット マシンで実行しています。
c++ - 追加後の unsigned long long 間違った値
追加する文字列が 2 つあります。文字列は HEX 値です。文字列を long long に変換し、追加してから文字列に戻します。しかし、この操作はうまくいきません。
コード:
受け取りました
この魔法を説明できる人はいますか?どうすれば修正できますか?
16 進値に戻る
c - C 符号なし整数から正確な double 値 (精度) を取得する方法
リバース エンジニアリングしようとしているチェックサムがあります。最初にチェックサムを作成するために使用された元の初期値を知っていれば、チェックサムを生成し続ける方法を既に知っています。
これまでのところ、ダブルデータ型の数式を使用してチェックサムが生成されることがわかっています。
計算されたチェックサムの最終値は符号なし整数ですが、その前に double から unsigned long long 別名 (unsigned __int64) に変換されます。
私がやろうとしているのは、元の初期値を取得するためにチェックサムを元に戻す次のステップに進むために、符号なし整数を double データ型の同じ値に戻すことです。
ここでチェックサムが計算されている間、double データ型で生成される値です。
3083570000.3115764
チェックサムを作成する0xB7CB8B50
これは損失の多い会話ではないと思うので、8 バイトの double から 4 バイトの整数チェックサムに変換しても実際には何も失われません。なんで?double
値は常に乗算によって作成されるため4294967295.0
、シフトのような末尾の 4 バイトを排除するだけだと私は信じています。
したがって、元の double 値を最後の桁に正確に戻すには、double
取得しようとしている値を で割る必要があります。4294967295.0
問題は、最後の小数点まで100%正確ではないため、適切に分割できないことです..浮動小数点演算では、IEEE浮動小数点のがらくたで100%正確ではないことを知っていますが、気にしません最初に作成されたのと同じ方法でこれを元に戻そうとしています。
出力
元のチェックサム double は0.71794958809146792
0.71794958809146792 * 4294967295.0 = 3083570000.3115761849416764
、パケットで送信された回答であるとします。0xb7cb8b50
符号なし整数0xb7cb8b50
をunsigned __int64
手動で手動でキャストすると、次のようになります0x00000000b7cb8b50
コードで生成された元の double は次のようになります。最初にチェックサムを作成するために同じ条件を再作成するために、パケットに追加される前に同じキーを使用しました。これは次のようになります。
Real ANSWER = 3083570000.3115764
そう
0x00000000b7cb8b50 should equals = 3083570000.3115764 double
私の逆コードは次のようになります
上記のコードは、小数点以下数桁間違っています。
どうすればエクストラを入手できますか、それ.3115764
も私の質問です。
c - unsigned long long をフォーマットすると整数オーバーフローが発生する
タイプはunsigned long long
私にとって期待どおりに機能しません。これが私の簡単なコードです:
次の出力が得られます。
使用gcc
されているのは mingw の一部としてインストールされ、バージョンは 4.8.1 です。
c++ - Project Euler タスク #8、コードは特定の時点で間違った答えを返し始めます
https://projecteuler.net/problem=8のタスクで何らかの問題が発生しています (1000 の数字の文字列から 13 の連続した数字の最高の積を見つける)。ある時点まで、プログラムは予測可能な結果をもたらします。そして、関数はunsigned long long intの範囲に非常に近い数値を返します。それが発生するポイントは、読み取られた値によって異なります。たとえば、数字の文字列がほとんど 8 と 9 で構成されている場合、5 と 6 のみの場合よりも早く発生します。なぜそれが起こるのですか?
プログラムは、現在最も高い積と、配列に現在含まれているすべての数値を出力します。次のようになります 。エラー
c++ - unsigned long long int の奇妙な動作
一部の計算では unsigned long long int を使用していましたが、
出力を与える:40900000000000000
この
出力を与える:40900000000000008
今、私は何が起こっているのか分かりません。印刷の試みを削除i64
しようとすると4*pow(10, 16)
、正しい結果が得られ、直接40000000000000000
印刷しようとすると、正しい結果が印刷されます。40900000000000011
10^14 の累乗では正常に動作しますが、その後、奇妙な動作を開始します。
誰かが何が起こっているのか説明できますか?