Skip to main content

ビットワイズオペレーターとは何ですか?

computerコンピュータープログラムでは、ビットワイズオペレーターは、表現のビットパターンを操作するオペレーターです。Bitise and、または、または、排他的または(xor)、右シフトと左シフトは一般的な操作です。ほとんどのコンピュータープログラミング言語には、これらの6つのオペレーターすべてが含まれています。それらは、コンピューターハードウェアを制御するプログラムで個々のビットの設定、クリア、またはフリップに使用されることがよくあります。ビットワイズ演算子は、データ暗号化と圧縮アルゴリズムでも頻繁に使用されます。common一般的なビットワイズ演算子は通常、C、C ++、Javaなどのプログラミング言語で象徴的に表されます。それらは、プラスサインやマイナスサインなどの算術演算子と同じように、表現で使用されます。ビットワイズ演算子は、アンパサンド

で表され、パイプ| |

およびXORで表されます。補体演算子としても知られているわけではありません。light右シフト演算子は、右側の指された二重通貨を使用します。対照的に、左シフトは、左尖った二重通信によって示されます。Javaには別の右シフト操作が含まれており、右ポイントのトリプル電子通信。右シフトと左シフトには、真のオペランドが1つしかありません。シフト操作の2番目の値はビットカウントです。ビットワイズオペレーターがどのように機能するかをよりよく理解するために、個人はオペランドをバイナリ数字として視覚化できます。たとえば、補体演算子は、単一のオペランドの各ビットを反対側の状態に反転させます。1つはゼロになり、ゼロは1つになります。8ビットバイナリ値00110101の補体は11001010です。少しずつ、各オペランドから対応する1つのビットを使用して論理と操作が実行されます。各ビット操作の結果は、全体的な結果のビット位置に配置されます。たとえば、およびオペレーターは、1つのオペランドのうち7ビット7を処理し、他のオペランドのビット7を処理します。結果は、全体的な結果のビット7に保存されます。and ANおよび操作では、結果が1つになるためには両方のオペランドビットが必要でなければなりません。そうしないと、結果はゼロです。たとえば、オペランドの8ビットバイナリ値が00110101および11110000の場合、結果は00110000になります。および演算子の一般的な使用は、結果の特定のビットをゼロにすることです。これは、オペランドの1つにこれらのビット位置にゼロを配置することによって行われます。それ以外の場合、結果は1つです。ORオペレーターの一般的な使用は、結果の特定のビットをそれに設定することです。これは、オペランドの1つにそれらのビット位置に配置することによって行われます。XOR操作の場合、両方のオペランドビットがゼロである場合、または両方のオペランドビットが1&mdashの場合、結果はゼロです。それ以外の場合、結果は1つです。ビット位置の。論理的な正しいシフトは、シフトの一部としてゼロを左のビットに移動します。算術右シフトは、シフト後に同じ位置にシフトする前に、左端のビット—サインビット—をコピーします。元のビットも残りとともに正しくシフトされます。どちらのタイプの左シフトもゼロを右端に移動します。同様に、左シフトが処分される前の左端のビット。オペランドのもう一方の端に包まれません。bitiseビットワイズシフト操作は、言語と実装に依存するものです。たとえば、cおよびc ++では、オペランドが符号なし整数である場合、

および

は論理シフトを実行します。オペランドが署名された整数である場合、代わりに算術シフトが行われる可能性があります。Javaでは、すべてのオペランドが署名されていると見なされ、算術シフトは常に<<で実行されます。演算子は論理的な正しいシフトに使用されますが、慎重なタイプキャストなしに代わりに算術的な正しいシフトを誤って行うことは依然として可能です。いくつかは署名されていません。複雑な式の中央にあるビットワイズ演算子と数値定数は、予想どおりに評価されない場合があります。式の各量のサイズと署名/署名/署名の性質を指定するように注意する必要があります。これは、プログラムコードの特定の変数タイプへの慎重なタイプキャストまたは暫定的な割り当てで実行できます。