問題タブ [signed-integer]
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 - 整数オーバーフローが発生しない
いくつかの値を出力したいとします。TMin
符号付き変数がand TMax
(この場合は 4 バイトの int、0x7FFFFFFF
asTmax
および0x80000000
asを使用)を超えた場合、整数オーバーフローが発生するはずですTmin
が、これらの例では期待どおりの結果が得られません (コメントで説明されています)。
c++ - 符号付きゼロと符号なしゼロの間のソートC ++
大学で C++ を使用して行っている課題で、負のゼロとゼロを並べ替えることができなければなりません。次のコードが負のゼロを生成する理由を教えてください。私は立ち往生しており、なぜこれが機能するのかわかりません...
上記のベクトルをソートするときに負のゼロを生成するより良い方法がある場合は、アドバイスしてください。どうもありがとう!
java - Java での 24 ビットから 32 ビットへの変換
OpenBCIと呼ばれる新しい IoT プロジェクトに興味があります。これは基本的に、脳波やその他のバイオデータを読み取って処理するためのオープン ソースの EEG です。彼らのドキュメントでは、(RFDuino を介して) 無線で送信されたデータは 24 ビット データを送信すると主張しています。24 ビット値を 32 ビット符号付き整数に変換するには、次の Java フレンドリーな処理コードを提案します。
ここで何が起こっているのかを正確に理解しようとしていると思います。コードの最初の宣伝文を見てみましょう:
- 入力に 3 バイトがあると仮定しても安全なのはなぜですか?
0xFF
値の重要性は何ですか?- 左ビットシフト (
<<
) の目的は何ですか?
2 番目のセグメントも少し謎です。
- なぜ
newInt & 0x00800000
ですか?の意味は何0x00800000
ですか? if-else
上記の操作の肯定的な結果と非否定的な結果に基づいているのはなぜですか?0xFF000000
との意味は何0x00FFFFFF
ですか?
この関数には、もっとよく理解したいハンドウェーブとマジックがたくさんあると思います!
binary - 符号なしおよび符号付き 2 進整数への加算
2 進数を足すとどうなるか、誰かが説明してくれるかどうか疑問に思っていました。
0b1111 の 4 ビットがあり、0b1111 に 1 を加算するとします。バイナリ エンコーディングは 0b10000 にすべきだと思います。ただし、4 ビットしかないため、ビットは 0b0000 に変更されます。
なぜこうなるのか気になっていたのですが、容量が足りないのでしょうか?0b1111 が符号付き整数の場合、どのように 1 を足すのでしょうか?
c - 符号付き整数でXORビットキャンセルを行うときにトラップ表現を回避するにはどうすればよいですか?
与えられた 3 つの数値の提案された解決策として、それらの 2 番目に大きいものを見つけてください、私は書きました:
アイデアは^ smallest ^ largest
、中間の数が残るようにビットをキャンセルすることです。
ただし、@chux は問題を指摘しました。
int
andの特異な問題a ^ b ^ c ^ smallest ^ largest
は、まれな非 2 の補数プラットフォームで中間結果がトラップ表現になる可能性があることです。– チュークス@chux説明してください?XOR はビットごとに動作するだけで、ビットが何を表しているかは気にしませんよね? – 200_成功
XOR は気にしませんが、結果が問題になる可能性があります。たとえば、符号と絶対値の整数の場合、トラップ値が発生してコードが停止する可能性があります
-1 ^ 1
。-0
C11 §6.2.6.2 を参照してください。– チュークスさらに、C11 §6.2.6.2 3 では、まれな非 2 の補数プラットフォームでの int を使用した ^ の実装定義の動作を指定しています。特に、「これらのケースが実際に負のゼロまたは通常のゼロを生成するかどうかは指定されていません」 ^ b ^ c ^ 最小 ^ 最大の未指定をレンダリングすると、トラップ値が使用されていない場合でも、必要に応じて機能します。次のセクションでは、これが UB になる方法について説明します。この斬新なコードは unsigned 型に任せるのが最善です。– チュークス
論理的にも数学的にも正しいはずの技術が、専門性によって狂ってしまうのは残念なことです。
この XOR 手法を救済し、法的に安全にする方法はありますか? (組合が絡むものかな?)
c - 表現可能な最大の整数に 1 を加えると、結果は負になりますか?
このプログラムは、C
実装に対して簡単な質問に答える ように求めています。
表現可能な最大の整数INT_MAX < 0を確認して出力します。
したがって、出力が表示されます0
。condition がfalseになり、関係演算子が returnになるため0
です。
しかし、表現可能な最大の整数に加えて条件をチェックすると、次のプログラムを参照してください。 1
と表示された出力 1
。
条件がfalseにならないのはなぜですか?
また、表現可能な最大の整数に 1 を加えると、結果は負になりますか?
assembly - MIPS アセンブリのコード ジェネレーター
この疑似コードを MIPS アセンブリに変換する方法を知っている人はいますか? シードはグローバル変数です
java - forループで2つの符号付き整数を比較する奇妙な動作
次のように述べられている問題を解決しようとしています。セットセグメントとポイントセットが与えられた場合、各ポイントを含むセグメントの数を計算します。
私が遭遇した問題は、ポイントがセグメントに含まれる回数を数えなければならないときです。特定の入力があると、内側のループは各ポイントのカウンターを正しくインクリメントし、別のデータセットがある場合は天気予報を行い、ゼロと負の数と非負の数を比較すると、奇妙な動作をします。
以下は、私が直面している問題を特定するために作成された単なるスクリプトであり、実際の実装を表すものではありません。
テスト ケースでは、次のような出力が得られます。
ケース 1:
出力:
テスト ケース 1:
- 2 座標 [0, 5] および [7, 10] のセグメント。
座標 1、6、および 11 の 3 つのポイント。
ポイントのカバレッジの計算:
座標 1 の点は、0 から 5 の間です
計算終了!
1 点目のカスタム チェック:
- (0 <= 1 かつ 1 <= 5) ですか? 真実
ケース 2:
出力:
テスト ケース 2:
- 1 座標 [-10, 10] のセグメント。
座標 -100、100、および 10 の 3 点。
ポイントのカバレッジの計算:
計算終了!
カスタム チェック:
- (-10 <= 0 かつ 0 <= 10) ですか? 真実
ご覧のとおり、内側のループの条件は、セグメント [-10, 10] に対して、座標 0 の点の場合を適切に計算していません。
前もってありがとう、エンドリット。