問題タブ [bit-shift]
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.
vb.net - VB.NETでビットごとにシフトする方法は?
VB.NET で右/左にビット単位でシフトするにはどうすればよいですか? これには演算子もありますか、それともユーティリティメソッドを使用する必要がありますか?
c# - .NET での符号ビットのシフト
モノクロ ビットマップからビットを読み取っています。16 ビットごとshort
に逆の順序で格納しています。ビットマップのビットが黒の場合は 1 を格納します。白の場合は 0 を格納します。
例: ビットマップの場合: bbbw bbbw bbbw wwww
my short is: 0000 0111 0111 0111
私がこれをやろうとした最初の方法は次のとおりです。
1 つの割り当てとシフトの後、予想される -32768 (1000 0000 0000 0000) を取得しました。
2回目で-16384(1100 0000 0000 0000)になりました。
使用するコードをushort
変更し、if
行をに変更したs |= (ushort)Math.Pow(2, 15);
ところ、動作するようになりました。
私の質問は、.NET で符号ビットがシフトしないのはなぜですか? 符号ビットをシフトする方法はありますか?
operators - ALU演算子を使用した1つの位置の右バレルシフタ?
ALU演算子(NOT、OR、AND、XOR、ADD、SUB)のみを使用して、8ビットのバイナリ値に対して右シフトを実行する効率的な方法があるかどうか疑問に思いました。
左シフトは2を掛けるのと同じなので、8ビットの2進値を加算するだけで左シフトを実装できました。しかし、右シフトでこれを行う方法は考えられません。
私がこれまでに思いついた唯一の方法は、7つの左バレルシフトを実行することです。これが唯一の方法ですか?
c++ - ビット左シフト
左に 2 回ビット シフトi
し、値を に格納するとしますf
。
あれは正しいですか?C/C++ でこれを行うにはどうすればよいですか?
php - PHP右シフトと負の結果?
一部の C コードを PHP に変換しているときに、特に右シフト演算子を使用しているときに問題が発生しました。
編集:次の例では、ビット = 0;
元の C コード:
PHP コード:
codeword
130728 から始めると、CI で予想される結果は -1 になります。PHP では 255 を取得します。これは、算術/論理シフトの違いと関係があることを理解しており、MSB がゼロのままであるために負符号が導入されていません。
シフトを含まないPHPで上記を行う「迅速な」方法はありますか?たとえば、基本的な算術などを介して、期待される答えが得られますか?
c++ - シフト演算子を使用した任意の数値による除算
n
たとえば、24
シフト演算子と足し算を使用して、数値をどのように除算できますか?
( n % 24 == 0
)
c - Cで負の数を右シフト
私は次のことを行うCコードを持っています。
今試してみると
私は得る
これは期待されていますか?
私は次のようなことを考えることができます
つまり、-32767.5は-32768に丸められます。
この理解は正しいですか?
c# - 負の値でビットシフトする奇妙な結果が得られるのはなぜですか?
この質問は、この質問の複製ではありません。
(正の) 数値を負の値、つまり 8 << -1 だけ左シフトしなければならない状況に遭遇しました。その場合、結果は 4 になると予想されますが、これまでに行ったことはありません。そこで、仮説を検証するために小さなテスト プログラムを作成しました。
驚いたことに、次の出力が得られました。
誰でもこの動作を説明できますか?
ここにちょっとしたボーナスがあります。左シフトを右シフトに変更すると、次の出力が得られました。
assembly - x86 アセンブリの右シフト演算子 SHR の副作用?
ASM デバッガー ollydbg を使用してプログラムをトレースしていると、次のコード スニペットに出くわしました。これはループ セグメントです。
他のオペレーターが何をしているかを追跡して取得することができ、それをたどると理にかなっています。しかし、SHR EBX、CL は私には意味がありません。
しかし、トレース時に代わりに見られるのは、ループの反復が奇数の場合、LSB を破棄し、MSB をその場所にシフトすることです。偶数の場合、ebx は変更されません。各ループ反復で、ecx レジスターは次のように変更されます。
私が期待していたのは、2 番目または 3 番目のループの後で、0x20 が既に 32 ビットをシフトしているため、ebx が常にゼロになるということでした。
私はちょっと混乱しています、誰かがこれに光を当てることができますか?
ありがとう