問題タブ [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.
c - シフト演算子 (<<、>>) は C で算術または論理ですか?
C では、シフト演算子 ( <<
、>>
) は算術演算ですか、それとも論理演算ですか?
c - バイト配列を 12 ビットでシフトする方法
バイト配列の内容を 12 ビット左にシフトしたい。
たとえば、次の type の配列から始めuint8_t shift[10]
ます。
左に12ビットシフトすると、次のようになります。
c# - 符号なし右シフトを使用して C# での整数オーバーフローを防ぐことはできますか?
私は、lareValue1 と largeValue2 のすべての可能な値 (これらは少なくとも 1 です) を含む正の数を alwaysPositive に割り当てたいと考えています。
次のステートメントは、バッファ オーバーフローを引き起こします。
減算して追加することでそれを防ぐことができることを私は知っています:
しかし、他のプログラミング言語では、符号なしビットシフトを使用してトリックを実行できます。
C#でこれを行うにはどうすればよいですか?
以下の答えはすべて問題を解決します。これを行う方法はおそらくたくさんありますが、それらすべて (私の解決策を含む) には共通点が 1 つあります。
language-agnostic - ビットごとのシフト (ビットシフト) 演算子とは何ですか? また、どのように機能しますか?
私は暇なときに C を学ぼうとしていますが、他の言語 (C#、Java など) も同じ概念 (および多くの場合、同じ演算子) を持っています...
私が疑問に思っているのは、コア レベルでは、ビット シフト ( <<
、>>
、>>>
) が何をするのか、それがどのような問題を解決するのに役立つのか、曲がり角に潜んでいる問題は何かということです。言い換えれば、ビット シフトのすべての良さを理解するための完全な初心者向けガイドです。
java - Javaでintを3バイトに変換するにはどうすればよいですか?
私はそれを表すint
3つ(ビッグエンディアン)に変換しようとしています。bytes
int
ビット単位およびビットシフトと関係があると確信しています。しかし、私はそれを行う方法がわかりません。
例えば:
*注: int は 4 バイトであり、3 バイトがオーバーフロー/アンダーフローする可能性があることは承知しています。
c - K&R C の第 2 章の「getbits()」メソッドを理解するのに助けが必要
第 2 章のビット演算子に関するセクション (セクション 2.9) で、サンプル メソッドの 1 つがどのように機能するかを理解するのに苦労しています。
提供されるメソッドは次のとおりです。
考え方は、指定された数値x に対して、位置pから始まるnビットを右から数えて返すというものです(右端のビットが位置 0 になります)。次の方法を考えます。main()
出力は次のとおりです。
getbits(63892 (f994), 4, 3) = 5 (5)
私はこれの一部を理解していますが、主に私が理解していないビット (しゃれは意図していません) のために、「全体像」に問題があります。
私が特に問題を抱えている部分は、補足部分です: ~(~0 << n)
. xを扱う最初の部分を取得したと思います。私が苦労しているのはこの部分 (そしてマスク) であり、実際にそれらのビットを取得するためにすべてがどのように組み合わされるかです。(コードと calc.exe を使用して結果をチェックすることの両方で、それが実行されていることを確認しました。バイナリ ビューがあることを神に感謝します!)
何か助けはありますか?
c++ - C++ で 2 つの unsigned char を追加するビット演算子
16 進数のものが 2 つある場合、バイナリを一緒に追加して値を取得する方法はありますか?
C ++では、私が持っているとしましょう
私が欲しいのはどういうわけかです
1100001010100011
、これはビット単位の演算子を使用して可能ですか?
t と q のバイナリ形式を抽出して追加したい...
c# - Short に変換したバイナリ データは有効ですか?
機器によって生成されたバイナリ ログ ファイルを読み込んでいます。
byte[] にデータがあります。
short を作成するために 2 バイトを読み取る必要がある場合は、次のようなことができます。
これで、値が有効なデータに対して正しいことがわかりました。
ファイルがめちゃくちゃで、値 FF FF がバイト配列のこれらの 2 つの場所にあったとしたら、どうすればわかりますか?
FF FF をショートに変換した結果の値を見ると、-1 が得られます。
これは FF FF の通常の値ですか? それとも、コンピュータが何らかのショート バウンドにヒットし、無効なデータでロール オーバーしただけですか?
私の目的では、これらの数値はすべて正になります。FF FF が実際に短い -1 である場合、すべての結果が正であることを検証する必要があります。
ありがとう、
キース
ところで、私は他の数値データ型も読んでいます。という理由だけでここに表示します。Read 関数は、byte[] からの読み取りの基本部分です。他のすべてのデータ型の読み取りでは、基本的な Read() 関数が使用されます。
c++ - バイト(C ++)の最下位4ビットを取得する最速の方法は何ですか?
私はこれについて話している:
10進数で77、16進数で4Dの文字「A」がある場合。Dを取得する最速の方法を探しています。
私は2つの方法について考えました:
与えられたxはバイトです。
x << 4; x >> 4
x %= 16
他の方法はありますか?どちらが速いですか?
c - 配列に順番に格納されている上位ニブルと下位ニブルを連結するにはどうすればよいですか?
ニブルのリストを含む配列があります。
上位ニブルを左シフトして下位ニブルと連結することにより、隣接するニブルを 1 バイトに結合したいと考えています。出力は次のようになります。
Cでこれをどのように達成できますか?