计算机码:计算机在实际存储数据的时候,采用的编码规则(二进制规则)
计算机码:原码、反码和补码,数值本身最左边一位是用来充当符号位:正数为0,负数为1
原码:数据本身从十进制转换程二进制得到的结果(正数的原码、反码和补码就是原码本身)
反码:针对负数,符号位不变,其他位取反
补码:针对负数,反码+1
系统中存在两个0:+0和-0
+0: 00000000
-0: 10000000 原码
取反 11111111
补码 00000000
位运算符
位运算:取出计算机中最小的单位(位bit)进行运算
&:按位与,两个位都为1,结果为1,否则为0
|:按位或,两个有一个为1,结果为1
~:按位非,一个位如果为1则变成0,否则反之
^:按位异或,两个相同则为0,不同则为1
<<:按位左移,整个位(32位),向左移动一位,右边补0
>>:按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1)
注意:
1、系统进行任何位运算的时候都是使用的补码
2、运算结束之后都必须转换成原码才是最终要显示的数据
运算符优先级(从上往下优先级降低)

流程控制
流程控制:代码执行的方向
控制分类
顺序结构:代码从上往下,顺序执行。(代码执行最基本的结构)
分支结构:给定一个条件,同时有多种可执行代码(块),然后会根据条件执行某一段代码
在PHP中,分支结构主要有两种:if分支和switch分支
if分支:给定一个条件,同时为该条件设置多种(两种)情况,然后通过条件来判断,来实现具体的执行段
基本语法:if分支PHP也提供多种方式来实现
if (condition) {
// 条件为真时执行的代码
}
两面性
if (condition) {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}
复杂if结构:在判断条件之后,通常就有两种结果,满足或者不满足,在不满足之后还可以再次判断,采用elseif,可以多次采用(如果条件特别多才会采用复合if结构,这里就不详细讲了,学过c语言的应该都会)(如果判断条件不一致,建议使用嵌套语法)
if (condition1) {
// 条件1为真时执行的代码
} elseif (condition2) {
// 条件2为真时执行的代码
} else {
// 所有条件均为假时执行的代码
}
if分支,适用于所有的条件判断(分支结构)
Switch分支
Switch分支:有一组情形存在,通过一个条件,通常有多个值,但是每一个值都会有对应不同的代码要执行。判断方式:是将条件放到分支结构内部判断
基本语法:
switch (expression) {
case value1:
// 代码块1
break;
case value2:
// 代码块2
break;
...
default:
// 默认代码块
}
eg:
$day = "Monday";
switch ($day) {
case "Monday":
echo "今天是星期一";
break;
case "Tuesday":
echo "今天是星期二";
break;
case "Wednesday":
echo "今天是星期三";
break;
default:
echo "今天是其他日子";
}
if和switch的选择:
1、if能做所有的分支结构事情
2、switch处理的是条件比较多,同时比较单一,而且是固定值匹配的分支结构
循环结构:在某个条件控制范围内,指定的代码(块)可以重复执行
在PHP中循环结构有以下几种:
For循环:通过条件、起始和终止判断执行
for (initialization; condition; increment) {
// 循环体代码
}
$i = 0;
for (; $i < 10;) {
echo $i++;
}
While循环:通过判断条件终止
while (condition) {
// 代码块
}
$i = 1;
while ($i <= 5) {
echo $i . "\n";
$i++;
}
Do-while循环:跟while差不多,区别:
while 循环先检查条件再执行循环体,而 do-while 循环先执行循环体再检查条件。do-while 至少会执行一次循环体。
do {
// 代码块
} while (condition);
Foreach循环:专门针对数组
foreach ($array as $value) {
// 处理$value的代码
}
foreach ($array as &$value) {
$value = $newValue; // 直接修改原数组
}
unset($value); // 循环后建议取消引用
注意:
1、循环后引用变量可能意外修改数组,建议立即unset()
2、遍历多维数组时通常需要嵌套foreach
3、PHP 7+支持foreach的指针操作不影响原数组
循环控制
循环控制:在循环内部对循环本身进行控制
中断控制:重新开始循环,循环体中还有其他内容,也再执行
Continue层级;
终止控制:循环直接结束
Break层级;
因为循环经常性会碰到嵌套(循环中间包含循环),如果在循环内部有些条件下,明确可以知道当前循环(或者说外部循环)不需要继续执行了,那么就可以使用循环控制来实现,其中内部循环也可以控制到外部,就是通过使用层级参数
Continue2;//当前自己循环后面内部不再执行,同时外部循环如果还有循环体也不再执行,重新来过;
Break2;//当前自己循环结束,同时外部也结束(如果还有外部不受影响,继续执行)
浙公网安备 33010602011771号