ホームページ > バックエンド開発 > Python チュートリアル > PythonとC言語の「AND、OR、XOR」の違い

PythonとC言語の「AND、OR、XOR」の違い

高洛峰
リリース: 2016-10-19 13:32:52
オリジナル
1658 人が閲覧しました

Python の場合:

ビット単位の演算はすべて、演算に参加する数値のバイナリ形式で実行されます。

1. AND演算:AとBの値が両方とも1の場合、A、B、およびの演算結果は1、それ以外の場合は0になります(演算子:&)

2. : A または B の値が 1 の場合、A、B または の演算結果は 1、それ以外の場合は 0 (演算子: |)

3. XOR 演算: A と B が 1 と異なる場合のみ、予算A と B の結果は 1、それ以外の場合は 0 (演算子: ^)

4. ビットごとの反転 (ビットごとの否定): メモリ内の数値を表す 2 進数を反転し、0 は 1 になり、1 は 0 になります (演算子: ~)。 )

演算方法:

1. AND演算: 5&3の計算プロセスは、0101(2)&0011(2)=0001(2)=1です

注: のように、両方の数値を2進数に変換して比較することを意味します。上の例: 5 の 2 進数は 0101,3 の 2 進数は 0011 です。この場合、これら 2 つの数値の 2 進数の最初のビットは同じで、1 であり、残りはすべて 0 です。 0001 を取得し、それを 10 進数に変換すると、結果は 1 になります

理解を容易にするために、別の例、「Python コア プログラミング」の表 5-4 の例を見てみましょう: >>>30&45 結果は 12 です

つまり、30 = (011110), 45=(101101) ビット演算の結果は 12(1100) になります

残りの 3 つのビット演算はこれと同じです

2 または演算: 5|3 計算プロセスは 0101 です。 (2)|0011(2)=0111(2)= 7

3. XOR 演算: 5^3 の計算プロセスは 0101(2)^0011(2)=0110(2)=6

4 です。 (ビット単位の否定): 5=0101(2) 計算プロセス~5=1010(2) 例: 一定量を左に移動するビット単位の演算、例: 2=0010(2) 2

2. >>: 右シフト方法は左シフトと同じですが、方向が逆です

コンピューターにおける負の数の表現:

元の数値を反転した後ビット単位 + 1 = 元の数値の補数 (元の数値の逆数)

元の数値: 通常の数値を形成するためにコンピューター内の 2 進法で表されます 数値は元の数値です

例: 5=00000000 00000000 00000000 00000101

5 は 11111111 11111111 11111111 11111010 の補数です。C 言語での -5 のバイナリ表現

:

優先順位は高いものから低いものまで ~、&、^、| です。

の典型的な使用法は 2 つあります1 つは、ビット列情報の特定のビットを取得することです。たとえば、次のコードは x 7 ビットの最下位ビットをインターセプトします: x & 0177。 2 つ目は、変数が特定のビットを保持し、残りを 0 のままにできるようにすることです。たとえば、次のコードでは、x が下位 6 ビットのみを保持できるようにします: x = x & 077。

ビットごとの OR 演算の一般的な使用法は、ビット文字列情報の特定のビットを 1 に設定することです。右端の 4 ビットを 1 として取得し、他のビットは変数 j の元のビットと同じままにする場合は、論理 OR 演算 017|j を使用できます

ビットごとの XOR 演算の一般的な使用法は次のとおりです。ビット列情報内の特定のビットの情報 その逆。整変数 j の情報の右端 4 ビットの逆数を見つけたい場合は、論理 XOR 演算 017^j を使用して、j の情報の右端 4 ビットの逆数、つまり元々 1 だったビットを見つけます。 、結果は 0 で、元のビットが 0 の場合、結果は 1 です。 a=3、b=4の場合、一時変数を使用せずに2つの値を交換します。 a と b の値を交換したい場合は、次の代入ステートメントを使用できます:

a=b^a; a=a^b;定数を生成するためによく使用されます。変数 x の下位 6 ビットを 0 に設定し、残りのビットを変更しない場合は、コード x = x & ~077 を使用してこれを実現できます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート