ホームページ > バックエンド開発 > PHPチュートリアル > PHP ビット演算子_PHP チュートリアル

PHP ビット演算子_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:37:22
オリジナル
1169 人が閲覧しました

これはシステムの最下位層に関係するもので、Web 開発ではほとんど使用されません。これが存在することを知っておくとよいでしょう。根底にあるものを説明するのはいつも難しい。
メモリに格納される変数は 2 進数です。整数は 32 ビット システムでは 4 バイトを占め、1 バイトは 8 ビット、つまり 32 ビットの演算です。


$a 仮説変数 $a の値は 3 、$b の値は 2 です。
この場合、メモリに保存される $a の形式は次のようになります:
00000000 00000000 00000000 00000011
左シフトが実行されるたびに、すべてのビットが左に移動され、右側にゼロが埋め込まれ、左側の余分なビットが破棄されます。
したがって、 $a 2 だけ左にシフトすると、次のようになります:
00000000 00000000 00000000 00011000
それは12です。 3 × 2 × 2 =12 に相当します。

$a >> $b 右シフト $a のビットを右に $b 回シフトします (各移動は「2 による除算」を表します)。
変数 $a の値が 24 で、$b の値が 2 であるとします。
この場合、メモリに保存される $a の形式は次のようになります:
00000000 00000000 00000000 00011000
右シフトが実行されるたびに、すべてのビットが左から右に移動され、右側の余分なビットは破棄され、左側の空いたビットはゼロで埋められます。
したがって、 $a 2 だけ右にシフトすると、次のようになります:
00000000 00000000 00000000 00000110
それが6です。 24 ÷ 2 ÷ 2 = 6 に相当します。

変位演算はシステムの基本演算であり、最適化コードを極限まで最適化すると、数値を 2 の公倍数に変換して変位計算を行うことができ、演算速度は乗算や除算よりもはるかに高速になります。実行されました。しかし、WEB開発ではその必要性はほとんどなく、システムの最下層を越えるとプログラムの移植性が低下します。

他のビット演算子も同様です。例:
$a & $b And (ビット単位の AND) は、両方とも 1 である $a と $b のビットを 1 に設定します。
変数 $a の値が 5 で、$b の値が 6 であるとします。
$a:
00000000 00000000 00000000 00000101
$b:
00000000 00000000 00000000 00000110
$a & $b :
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00000110
─────────────
00000000 00000000 00000000 00000100
垂直方向に見ると、上下が 1 の場合は 1 が得られ、それ以外の場合は 0 になります。
つまり $a & $b = 4.

~ $a Not (ビット単位の否定) $a のビットを 0 から 1 に設定し、その逆も同様です。
~$a:
00000000 00000000 00000000 00000101
─────────────
11111111 11111111 11111111 11111010
$a が符号付き整数で、最初のビットが符号ビットで、1 が負の数を表す場合、 ~ $a = -2147483642 となります。
$a が符号なし整数で、最初のビットがまだデータ ビットである場合、 ~ $a = 4294967290 となります。

以下については詳しくは紹介しません:
$a | $b Or (ビット単位の OR) は、$a または $b のビットを 1 に設定します。
$a ^ $b Xor (ビット単位の排他的論理和) は、$a と $b の異なるビットを 1 に設定します。

通常、マルチビット システムとは、システムが整数を処理するときに同時に計算される桁数を指します。上記の例はすべて 32 ビット システムに基づいています。移動時の余分なビットは切り捨てられるため、64ビットや12ビットの場合はディスプレースメントの結果が異なる場合があり、計算時のビット数を調整する必要があります。

から:http://blog.sina.com.cn/s/blog_815611fb01017wtj.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/735886.html技術記事これはシステムの最下位層に関係するもので、Web 開発ではほとんど使用されません。これが存在することを知っておくとよいでしょう。根底にあるものを説明するのはいつも難しい。 メモリに保存される変数はすべてバイナリです...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート