問題タブ [bitwise-operators]
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# - ロングタイプ、左シフト、右シフト操作
前の質問を続ける なぜ私は長いから派生することができないのですか?
面白い問題を見つけました。
第一歩:
結果:4294967296。
ステップ2。
結果:0
ああ、だからここでは4294967296 == 0xFFFFFFFF
確認しよう
結果:4294967295。失敗します。
再確認しましょう
結果:1。失敗します。
唯一の説明は、私がlongを使用しているため、一部のビットが符号用に予約されているということです。CIではunsignedlongを使用します。みんなどう思いますか?
c - Cポインタのビットシフト?
私はこのCプロジェクトの真っ最中で、メモリを非常に効率的にしたいと考えています。いくつかのケースでは、ビットを保持するために記述した動的配列構造の void * を使用しています。64 (この場合) ビットすべてを使用したいと考えています。
私はすぐに、実際にはポインターに対してビット操作を行うことができないことに気付きました。だから私の解決策は次のとおりでした:
これで仕事は完了しますが、それは私のコンピューターでは long とポインターのサイズが等しいためです。これは、すべての (またはほとんどの) アーキテクチャに当てはまりますか?
そして私の本当の質問:ポインターでビット操作を行うためのより正しい方法はありますか? このアプローチは C ではやや一般的 (ビットを void * にパックする) だと思っていましたが、間違っている可能性があります...
c# - C#のJavaトリプルシフト演算子(>>>)に相当しますか?
>>>
Javaの演算子に相当する(C#での)ものは何ですか?
(明確にするために、>>
and<<
演算子については言及していません。)
c# - ビットごとの論理和: C# と C++ の比較
)。a = 8、b = 2 の 2 つの整数があるとします。C++ では、a | b は真です。その動作を使用して、フラグのコレクションを操作しました。たとえば、フラグは 1、2、4、8 などであり、それらのコレクションは一意になります。|として、C#でそれを行う方法が見つかりません。および & 演算子は、C++ の場合のようには動作しません。C# の演算子に関するドキュメントを読みましたが、まだわかりません。
編集:
残念ながら、私はどこかで物事を台無しにしているようです。たとえば、次のコードをご覧ください。
これは、フラグに入力した値に対して「y」を返します。3 | 8 は 11 になります。うーん... 私がやりたいのは、1、2、4、8、16 のフラグ コレクションを用意することです。数値を指定すると、それがどのフラグであるかを判断できるようになります。
java - 数値を完全なパディングでバイナリ文字列に変換しますか?
私はJavaに長い変数を持っていて、それを次のようなバイナリ文字列に変換しています。
long var = 24; Long.toBinaryString(val);
これで7ビットしか出力されませんが、64ビットすべて、つまり先行ゼロもすべて表示する必要があります。どうすればこれを実現できますか?
その理由は、各ビットを繰り返し処理し、ステータスに応じて操作を実行する必要があるためですが、それを行うためのより良い方法はありますか?
c++ - num%2またはnum&1を使用して、数値が偶数かどうかを確認しますか?
ええと、与えられた数が偶数であるかどうかを決定する少なくとも2つの低レベルの方法があります:
私は2番目のオプションがはるかにエレガントで意味のあるものだと考えています。それは私が通常使用するものです。しかし、それは好みの問題だけではありません。実際のパフォーマンスは異なる場合があります。通常、ビット単位の演算(logialなど)は、mod(またはdiv)演算よりもはるかに効率的です。もちろん、とにかくそれを最適化できるコンパイラもあると主張するかもしれませんが、私は同意します...しかし、そうでないコンパイラもあります。
もう1つのポイントは、経験の浅いプログラマーにとっては、2番目のポイントを理解するのが少し難しいかもしれないということです。その上で、これらのプログラマーがこの種のステートメントを理解するのにその短い時間を費やす場合にのみ、おそらくすべての人に利益をもたらすだろうと私は答えます。
どう思いますか?
num
指定された2つのスニペットは、がunsigned intであるか、2の補数表現の負の数である場合にのみ正しいです。-いくつかのコメントとして、かなりの状態です。
language-agnostic - ビット演算子を使用して整数が2^1-2^jの形式であるかどうかをチェックするためのワンライナー
1行のコードで、指定された整数が2i - 2jの形式であるかどうかを確認したいと思います。(ビット演算子を使用)
c# - Bitwise-OR は暗黙的に long にキャストされているようです。これは回避できますか?
私は C# に移行しようとしている Java プログラマーですが、この落とし穴には少し困惑しています。
最初の行は問題なくコンパイルされます。2番目はそうではありません。符号ビットを持つ定数があることを認識しているようで、何らかの理由で結果を long にキャストすることを決定し、エラーが発生します。
タイプ 'long' を 'int' に暗黙的に変換することはできません。
明示的な変換が存在します (キャストがありませんか?)
これまでの修正は次のとおりです。
キャストを処理しますが、それでも警告が残ります:
符号拡張オペランドで使用されるビットごとの OR 演算子。
最初に小さい符号なし型にキャストすることを検討してください
これをエラー/警告/ロングフリーの方法で表現する正しい C# の方法は何でしょうか?
language-agnostic - ビット演算子の実際のユースケース
次のビット演算子の実際のユースケースは何ですか?
- と
- XOR
- いいえ
- また
- 左/右シフト
javascript - javascript trunc() 関数
JavaScript で数値を切り捨てたい、つまり小数部分を切り捨てたい:
切り捨て ( 2.6 ) == 2
切り捨て (-2.6) == -2
重いベンチマークの後、私の答えは次のとおりです。