問題タブ [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.
javascript - JavaScriptのビットシフト
私は本当に大きな数を持っています:5799218898。そしてそれを13ビットに正しくシフトしたいと思います。
だから、windows-calculatorまたはpythonは私に:
予想通り。
しかし、Javascript:
javascriptの内部整数表現のせいだと思いますが、それについては何も見つかりません。
java - Javaでバイト配列からビットフィールドを解析する方法は?
ソースからの着信UDPパケットを適切なJava表現に解析するという骨の折れる作業が与えられました。キッカーは、パケット内に保持されているデータがバイトアラインされていないことです。プロトコルを可能な限り厳しくするために、データフィールドの有無を示すビットフィールドがいくつかあります。
たとえば、ビットインデックス34には、浮動小数点に変換する必要のある24ビットフィールドがあります。ビットインデックス110は、次の3つのフィールドがそれぞれ、その日の時間、分、および秒を含む5ビットおよび6ビットの値であることを示すフラグであり得る。(これらは私が作成したものですが、仕様の内容を表しています)。これらのパケットはおそらく数百ビットの長さです。
仕様が変更される可能性は低いですが、他の同様のパケット形式をデコードするように求められる可能性は完全にあります。
私は確かに必要に応じてビットシフトとマスクを行うことができますが、ビットシフトの地獄に行き着き、さらに多くのパケット形式が発見されたときにそれに溺れるのではないかと心配しています。
タスクをより管理しやすくするためのベストプラクティスやJavaライブラリに関する提案をお聞かせください。
c++ - C++ シフト ビット
ビットをシフトするのは初めてですが、次のスニペットをデバッグしようとしています:
「32」から「56」までの行のシフト カウントが大きすぎるという警告が表示されます。述語の「f64」は、データが 64 ビット データであることを意味します。
これはどのように行うべきですか?
編集:
コードをもっと入れるべきでした。
{ dem_content_buff[BytFldPos] = tmp_data; dem_content_buff[BytFldPos + 1] = tmp_data >> 8; dem_content_buff[BytFldPos + 2] = tmp_data >> 16; dem_content_buff[BytFldPos + 3] = tmp_data >> 24;
}
if (!(strcmp(dems[i].GetValType(), "f64"))) { dem_content_buff[BytFldPos] = tmp_data; dem_content_buff[BytFldPos + 1] = tmp_data >> 8; dem_content_buff[BytFldPos + 2] = tmp_data >> 16; dem_content_buff[BytFldPos + 3] = tmp_data >> 24; dem_content_buff[BytFldPos + 4] = tmp_data >> 32; dem_content_buff[BytFldPos + 5] = tmp_data >> 40; dem_content_buff[BytFldPos + 6] = tmp_data >> 48; dem_content_buff[BytFldPos + 7] = tmp_data >> 56; }
したがって、dem_content_buff現在はintのみを保持しています。この配列を 64 ビット データにも使用できませんか?
c++ - 64ビットマスクを作成するにはどうすればよいですか?
次の簡単なプログラムに基づいて、ビット単位の左シフト演算子は32ビットに対してのみ機能します。それは本当ですか?
プログラムの出力:
64ビットマスクを作成するにはどうすればよいですか?
c# - C#で2つの左山かっこ「<<」はどういう意味ですか?
基本的にタイトルの質問。私はMVC2のソースコードを見ています:
そして、私はダブルレフトアングルブラッカーが何をするのか興味<<があります。
java - Java >>と>>>の右シフト演算子の間でパフォーマンスが異なることはありますか?
Javaの>>(符号付き)と>>>(符号なし)の右ビットシフト演算子のパフォーマンスが異なると考える理由はありますか?自分のマシンで違いを検出できません。
これは純粋に学術的な質問です。それがボトルネックになることは決してないだろうと私は確信しています。私は知っています:あなたが何を意味するのかを何よりも書くのが最善です。たとえば、2で除算するには>>を使用します。
どのアーキテクチャがどの操作を命令として実装しているかにかかっていると思います。
c++ - C++ のシフト演算子
シフト演算子の後の値が左側のオペランドのビット数より大きい場合、結果は未定義です。左側のオペランドが符号なしの場合、右側のシフトは論理シフトであるため、上位ビットはゼロで埋められます。左側のオペランドが符号付きの場合、右シフトは論理シフトである場合とそうでない場合があります (つまり、動作は未定義です)。
誰かが上記の行の意味を説明できますか??
php - PHPと同等のjavascript>>>ゼロフィルビット演算子で右にシフトしますか?
PHPの方法を教えてください>>>?このような演算子はPHPでは使用できませんが、Javascriptでは使用できます。
私はちょうど次のような関数を発見することができました:
しかし残念ながら、それは完全には機能しません。
例:-1149025787 >>> 0Javascriptは3145941509を返しますPHPzeroFill()は0を返します
java - 負の論理シフト
Javaでは、なぜ-32 >>> -1 = 1なのですか?
-32だけに固有のものではありません。大きすぎない限り、すべての負の数に対して機能します。
x >>>
-1 = 1
x >>> -2 = 3
x >>> -3 = 7
x >>> -4=15
与えられた0>x>いくつかの大きな負の数
>>>-1は<<1と同じではありませんか?ただし、-32 << 1=-64です。
私は2つの補語を読みましたが、それでも理由がわかりません。
c - intの配列を効率的にビットシフトしますか?
同じページに表示するために、sizeof(int)= 4およびsizeof(long)=8と仮定します。
整数の配列が与えられた場合、配列を論理的に左または右にビットシフトするための効率的な方法は何でしょうか?
私は、要素の最初のペア(インデックス0と1)のビットシフトを計算し、最初の要素(0)を設定するlongなどの補助変数を検討しています。このように続けると、要素(インデックス1と2)のビットシフトがコンピューターになり、次にインデックス1が設定されます。
これは実際にはかなり効率的な方法だと思いますが、欠点があります。32ビットを超えるビットシフトはできません。複数の補助変数を使用することは機能すると思いますが、私はどこかで再帰を想定しています。