位运算符
位运算符允许对整型数中指定的位进行求值和操作,针对二进制进行的运算
位运算符规则
$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a | $b Or(按位同或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
按位运算
A & B
系统内将A, B的二进制数字的每一位进行按位与运算 数字在系统的二进制表示通常是32位或者64位(取决于系统位数)
A | B
系统内将A, B的二进制数字的每一位进行按位或运算
A << n
A的二进制,往左边移动n位,右边空位补0(相当于数字乘二)
A >> n
A的二进制,往右边移动n位,左边空位补符号位
~ A
将A的二进制数字取反
A ^ B
将A,B的二进制数字取异或
原码、反码、补码
原码
10进制数的二进制数字,并且规定第一个位置为符号位(0:正数,1:负数)
反码
正数:反码就是其原码 负数:原码的非符号部分,取反
补码
正数:补码是其原码 负数:反码+1;
数据在cpu内部都是按补码进行运算。
原码,反码,补码的转换过程是系统内部的工作,且转换时符号位不变;
用补码运算时,符号位参与运算(即当作一个普通的二进制位的数字进行运算)
二进制应用
管理一组事物(数据)的开关状态
1 00000001
2 00000010
4 00000100
8 00001000
数字相加可以产生相应的二进制状态
获取全部状态
$s1 = $state & $dn
产生指定状态
$state = $state | $dn;
消除指定状态
$state = $state & ~$dn;
数组运算符
$a + $b 联合 $a 和 $b 的联合。
$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE 。
$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE 。
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE 。
$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE 。
$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE 。
错误抑制符@
$link = @mysql_connect("localhost", "root", "pswd") or die("数据库连接失败");
用于可能发生错误的表达式前面
运算符优先级
算术运算符 > 比较运算符 > 逻辑运算符
流程控制
流程图基本符号
开始结束:圆头矩形
语句块:矩形
判断:菱形
输入输出:平行四边形
走向:箭头
分支结构
if else
switch
while
for
foreach
break $n 可以接受一个可选的数字参数来决定跳出几层循环
continue $n 可以接受一个可选的数字参数来决定跳出几层循环
declare
替换语法
if,while,for,foreach 和 switch替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;
GOTO
跳转到指定的标识符
标记 :
goto 标记
目标位置只能位于同一个文件和作用域
不能跳入循环
不能跳入函数
不能跳出函数
不能跳出文件
控制文件执行
die
die([ string $status])
终止脚本的运行,并输出内容,等同于exit()
sleep
sleep(int $seconds);
PHP脚本停止 seconds秒后,继续执行