問題タブ [bitwise-xor]
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 - 符号付き整数で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 手法を救済し、法的に安全にする方法はありますか? (組合が絡むものかな?)
vb.net - ビット操作 - チェックと削除
以下の簡単な例に注意してください。
私の質問の最初の部分は、行に関連していますIf (test And Names.Test3) = Names.Test3
。
If test And Names.Test3
フラグが存在するかのように単純にチェックしたほうがよいのではないでしょうか? ゼロ以外の値 (フラグが存在することを意味する) と評価された場合、条件の結果はTrue
いずれにせよなります。
2 番目の方法をチェックする最初の方法を使用する正当な理由はありますか? (私の答えは VB.NET に対するものですが、これが他の場所、つまり C#、C++ などの潜在的な落とし穴であるかどうかも知りたいと思います)。
また、フラグの削除に関しては、これを行うには 2 つの方法があるようです。
test = test Xor Names.Test3
とtest = test And Not Names.Test3
ただし、1 つ目は、フラグがない場合は追加し、ある場合は削除しますが、2 つ目はフラグを削除するだけです。それが唯一の違いですか?または、ある方法を他の方法よりも優先する必要がある別の理由がありますか?
c# - XOR ステップから C# へのインタビュー コード
LinkedIn のリンクからこのインタビューの質問に出会いました。XOR が何をするかは知っていますが、同時にビット シフトなどに慣れていません。それを行う必要がない場合は、作成しないようにしています自分にとっては複雑すぎる。
しかし、将来的に良いユースケースを見つけた場合に、これらがどのように機能するかについてもっと理解したいと思っています.
以下のプログラムの出力を予測します
それは出力を与える
x = 0;Y=1975
このコード行で正確に何が起こっているかを説明するために、誰かがこれをいくつかのステップに分けてもらえますか? 配属順などは?
bit-manipulation - ビット単位の Xor 最適化および/または使用しない
2 つの異なる MD5 実装のコードを調べていたところ、F (ビットごとの 3 項演算) が 2 つの異なる方法で実装されていることがわかりました。
Cで:
擬似的に:
私が理解できないのは、そもそも誰かがどのようにして f2 を思いついたのかということです。f1 は (if x then y else z) と聞いたときに記述する論理コードであるため、自分で f1 を考え出すこともできましたが、f2 を思い付くことはできませんでした。
明確にするために-私はf2が何をしているか、Xorがどのように機能するかを理解しています-誰かがf1からf2に移動する方法を理解できません..そのようにxorを使用することが同等であることをどのように知ったのですか?
機能するからといって、何かを使用することはできません。なぜ機能するのかを理解したいのです。
いわば、誰かが「数学を説明」できますか?
And/Or/Not を最適化するために Xor を使用できる特定のルールはありますか?
java - JAVAで予期しない出力を与えるXOR
Java で有限フィールドを実装しようとしていますが、そのためには 2 つの 2 進数を XOR する必要があります。これが私のコードです:
変数「overflow」の値は です11
。lastdigitsint をオーバーフロー (=11) で XOR すると、出力は 1000101 になるはずですが、コードは 1095 を出力しています。
誰かがなぜこれが起こっているのか説明できますか? ありがとうございました。
c - 8 ビットの代わりに 64 ビットを使用する C のビット単位の XOR
2 バイト配列のXOR 演算を効率的に行う方法を検討しています。このバイト配列を定義したのは、それらをXORする方がはるかに高速になると
思うからです。本当ですか?できればXORingループ内でこれにどのくらい効率的に変換しますか? バイト配列%8の長さが 0 でない場合、最後のバイトをパディングする方法は?unsigned char *
uint64_t
unsigned char *
uint64_t *
バイト配列を XOR する現在のコードを次に示しますが、各バイト (符号なし char) は個別に:
わかりました、その間、私はこのようにしようとしました。私のbytes_arrayはかなり大きいです(rgbaビットマップ4 * 1440 * 900?)。
更新: (この問題への 2 番目のアプローチ)
java - Xor は値を交換する際にどのように機能しますか?
元のコードは次のとおりです。
私の質問は、ここで文字値を交換する際に Xor がどのように機能するか、そしてここで rev[i++]^=rev[j--] が必要なのはなぜですか?
python - PythonのXorロジック
python(v2)を使用してhackerearth.comからこの問題を解決しました
問題文: Xor は狂っている
私のコードは次のとおりです。
しかし、私は入力の問題を超えています:入力#5から#9
1秒で実行されるテストを管理するために、誰かがこの問題を別の方法で解決できますか?