$a = $b++;
$a = $b;
$b= $b + 1;
$a = ++$b;
$b = $b + 1;
$a = $b;
xor 相同为false,不同为true
三元运算符 (expr1)?(expr2):(expr3);
我们知道,计算机里的信息,都是以0,1来存储的.
一个可以存储0/1的单元,称为位bit
8个位组成一个字节,Byte,
字节是计算机里最基本的单位
位运算
12 = 0000 1100
5 = 0000 0101
----&---------
0000 0100
12 & 5 = 4;
12 = 0000 1100
5 = 0000 0101
----|---------
0000 1101
12 | 5 = 13;
12 = 0000 1100
5 = 0000 0101
----^---------
0000 1001
12 ^ 5 = 9;
& ,把2个二进制值对齐, 把1看成ture,把0看成false, 然后每个位上都做 并且 的运算 ,
| ,把2个二进制值对齐, 把1看成ture,把0看成false, 然后每个位上都做 或者 的运算 ,
^ ,把2个二进制值对齐, 把1看成ture,把0看成false, 然后每个位上都做 异或 的运算 ,
$a = 0000 1100;
按位求反~
0000 1100
~-----------
1111 0011
计算机里表示负数,是用补码的规则来计算的
具体这样来计算负数,假设有8位
最高位是1 得出符号是负
开始补码规则
计算除符号位之外,其他7位的绝对值
()111 0011 = 115;
然后再把 绝对值 - 2^7 = 115 - 128 = -13
因此:
1000 0001 ===> 不要想当然是 -1
而是 1 - 128 = -127
1111 1111 ===>
111 111==127 - 128 = -1
1000 0000 ==> -128
1111 1111 ===> -1
0000 0000 ===> 0
0111 1111 ====> 127
为什么 有人问: -128 +127
直观来理解 -127 -0,+0,+127
// 移位运算
5 = 0000 0101;
5 << 1;
0000 1010; // 10
相当于*2的效果
echo 5 << 1;
5 = 0000 0101
5 >>1 = 0000 0010 = 2;
相当于除2的效果
echo 5 >> 1;
$a = true;
$a++;++$a;不会影响bool的值
$a ----> bool(true);
三元运算符 与 if else的效率问题