PHPビット演算
8159 ワード
PHPビット演算バイナリ バイナリは、計算技術で広く採用されている数制で、ドイツの数理哲学の巨匠レブニッツが1679年に発明した.バイナリデータは0と1の2つの数字で表される数です.その基数は2で、進位規則は「逢二進一」で、借位規則は「借一当二」である.現在のコンピュータシステムでは、基本的にバイナリシステムが使用されており、データはコンピュータにおいて主に符号化された形式で格納されている.コンピュータのバイナリは非常に小さなスイッチで、「オン」で1を表し、「オフ」で0を表す.20世紀に第3次科学技術革命の重要な標識の一つと呼ばれるコンピュータの発明と応用は、デジタルコンピュータが「0」からしか識別し処理できないためである.1’記号列からなるコード.その演算モードはまさにバイナリです.19世紀のアイルランドの論理学者ジョージ・ブールの論理命題に対する思考過程は、記号「0」に転化した.「1」のある代数演算で、バイナリは2進位の進位制である.0、1は基本演算子である.0、1の2つの数字記号しか使わないため、非常に簡単で、電子的に実現しやすい.バイナリの特性 は0と1だけで構成され、二進一に会うと、二 を借りる.バイナリには、原符号、逆符号、補符号の概念 がある.正数の原符号、補符号、逆符号はすべてそれ自身の である.0の元のコード、逆のコード、補のコードはすべてそれ自身の です負数の逆符号は、元の符号のビット数が逆である、すなわち0=』1,1=』0 である.負数の補符号は逆符号プラス+1 バイナリでは、最上位は正負、0は正数、1は負の を表す. PHPにおけるビット演算は、いずれも符号化の形で行う である. PHPでは、すべての数に符号がある、すなわち符号のない数を考慮しない場合 である. PHPビット演算 である. となる. とする. である. をシンボルビットで充填する.
GITHUBアドレス
&
ビット毎にバイナリに対応するビット毎に1のビットのみが1 var_dump(2 & 3);
2 , ,
00000000 00000000 00000000 00000010
3 , ,
00000000 00000000 00000000 00000011
2&3
00000000 00000000 00000000 00000010
// 2
|
ビットまたはバイナリのうちの対応するビットが1のビットであれば1 var_dump(2 | 3);
2 , ,
00000000 00000000 00000000 00000010
3 , ,
00000000 00000000 00000000 00000011
2|3
00000000 00000000 00000000 00000011
// 3
~
ビット毎逆バイナリで対応するビットを1の0、0の1 var_dump(~3);
var_dump(~2);
2 , ,
0 00000010
~2
1 11111101
1,
1 00000010
1 00000011
// -3 1 * 1 + 1 * 2
3 , ,
0 00000011
~3
1 11111100
1,
1 00000011
1 00000100
// -4
^
ビット異またはバイナリのうちの対応するビットが1つで0のビットが1 var_dump(2 ^ 3);
2 , ,
00000000 00000000 00000000 00000010
3 , ,
00000000 00000000 00000000 00000011
2^3
00000000 00000000 00000000 00000001
// 1
>>
右シフトバイナリにおいて、[2で割ったn次方]最高位は一定のまま、(シンボルビットは不変)低位は右にnビット(nビットをなくす)移動し、失われた補上シンボルビット$a = -2;
echo $a<<2;
// $a = 10000000 00000000 00000000 00000010
// 11111111 11111111 11111111 11111101
// 11111111 11111111 11111111 11111110 =》 +1
// , , , 0
// 11111111 11111111 11111111 11111000
// ,
// 111111111 11111111 11111111 11110111
// , ,
// 100000000 00000000 00000000 00001000
// -8
<<
左シフトバイナリでは、[2を乗じるn次方]の最高位は一定のまま、(シンボルビットは不変)高位は左にnビットをシフトし、低位はnビットecho -2>>3;
// 10000000 00000000 00000000 00000010
// 11111111 11111111 11111111 11111101
// 11111111 11111111 11111111 11111110
// 3 , , ,
// 11111111 11111111 11111111 11111111
// 11111111 11111111 11111111 11111110
// 10000000 00000000 00000000 00000001
// -1
GITHUBアドレス