Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
6e835e20
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
6e835e20
编写于
3月 01, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
0e0b388e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
198 addition
and
1 deletion
+198
-1
blog/php-basic/operator.md
blog/php-basic/operator.md
+198
-1
未找到文件。
blog/php-basic/operator.md
浏览文件 @
6e835e20
...
@@ -145,4 +145,201 @@ echo 1 > 10 ? '1大于10': '1小于10';
...
@@ -145,4 +145,201 @@ echo 1 > 10 ? '1大于10': '1小于10';
## 自操作运算符
## 自操作运算符
https://www.bilibili.com/video/BV18x411H7qD?p=32&spm_id_from=pageDriver
-
`++`
原来的值 +1
-
`--`
原来的值 -1
```
php
$a
=
1
;
$a
++
;
// $a = $a + 1;
```
前置操作和后置操作
```
php
<?php
$a
=
1
;
// 独立操作
$a
++
;
var_dump
(
$a
);
// int(2)
++
$a
;
var_dump
(
$a
);
// int(3)
// 非独立操作
$b
=
$a
++
;
$c
=
++
$a
;
var_dump
(
$b
);
// int(3)
var_dump
(
$c
);
// int(5)
var_dump
(
$a
);
// int(5)
```
衍生符号,类似自操作
```
+= $a += $b; <==> $a = $a + $b;
-=
*=
/=
%=
```
需要注意除法或取余,右边的操作数为0的情况
## 计算机码
计算机码:计算机实际存储数据的时候,采用的编码规则(二进制规则)
数值本身最左边第一位是符号位,正数0,负数1
原码、反码、补码
-
原码 数据本身从十进制转换成二进制得到的结果
-
正数:左边符号位为0(正数的原码,反码和补码就是原码本身)
-
负数:左边符号位为1
-
反码 针对负数,符号位不变,其他位取反
-
补码 针对负数,反码+1
系统中存在两个0
```
+0 0000 0000
-0 1000 0000 原码
取反 1111 1111
补码 0000 0000
```
```
+5 0000 0101(原码、反码、补码都是 )
-5 原码 1000 0101
反码 1111 1010 符号位不变,其他位取反
补码 1111 1011 反码+1
```
## 位运算符
位运算:取出计算机中最小的单位(位bit)进行运算
```
& 按位与 两位都为1,结果为1,否则为0
| 按位或 有一个为1,结果为1
~ 按位非 如果为1,结果为0;如果为0,结果为1
^ 按位异或 两位相同则为0,不同为1
<< 按位左移 所有位向左移动一位,右边补0,相当于乘以2
>> 按位右移 所有为向右移动一位,左边补符号位对应内容(正数补0,负数补1),相当于除以2
```
`
注意:
- 系统进行任何位运算的时候使用的都是补码
- 运算结束之后都必须转换成原码才是最终显示的数据
按位与
```php
<?php
$a = 5;
$b = -5;
var_dump($a & $b);
// int(1)
// 计算过程:
// 5 0000 0101 (正数 原码==反码==补码)
// -5 1000 0101(原码)
// -> 1111 1010(反码)
// -> 1111 1011(补码)
// 5 0000 0101
// -5 1111 1011(补码)
// & 0000 0001 正数
// 判断符号位:0表示正数(原码),1表示负数(补码)
```
按位非运算
```php
<?php
$b = -5;
var_dump(~$b);
// int(4)
// 计算过程:
// -5 1000 0101(原码)
// -> 1111 1010(反码)
// -> 1111 1011(补码)
// -5 1111 1011(补码)
// ~ 0000 0100 正数
// 4
```
按位右移
```php
<?php
$b = -5;
var_dump($b>>2);
// int(-2)
// 计算过程:
// -5 1000 0101(原码)
// -> 1111 1010(反码)
// -> 1111 1011(补码)
// -5 1111 1011(补码)
// >>2 --11 1110
// 1111 1110 运算结果,左边补符号位(符号位为0,是负数补码)
// -1 1111 1101 反码
// 1000 0010 原码
// -2
``
`
运算符的优先级(由高到低)
结合方向| 运算符 |附加信息
-
| - | -
不适用 | clone new| clone 和 new
右|
**
|算术运算符
不适用 | + - ++ -- ~ (int) (float) (string) (array) (object) (bool) @|算术 (一元 + 和 -), 递增/递减, 按位, 类型转换 和 错误控制
左| instanceof | 类型
不适用 | !| 逻辑运算符
左|
*
/ %| 算术运算符
左| + - .| 算数 (二元 + 和 -), array 和 string (. PHP 8.0.0 前可用)
左|
<
<
>
>| 位运算符
左| .| string (PHP 8.0.0 起可用)
无|
<
<=
>
>= | 比较运算符
无| == != === !==
<>
<
=
>
| 比较运算符
左| & | 位运算符 和 引用
左| ^ | 位运算符
左|
\|
| 位运算符
左| && | 逻辑运算符
左|
\|\|
|逻辑运算符
右| ??|null 合并运算符
无关联 | ? :| 三元运算符 (PHP 8.0.0 之前左联)
右| = += -=
*= *
*
= /= .= %= &=
\|
= ^=
<
<=
>
>= ??= | 赋值运算符
不适用 | yield from | yield from
不适用 | yield| yield
不适用 | print| print
左| and | 逻辑运算符
左| xor| 逻辑运算符
左| or | 逻辑运算符
文档:
[
https://www.php.net/manual/zh/language.operators.precedence.php
](
https://www.php.net/manual/zh/language.operators.precedence.php
)
https://www.bilibili.com/video/BV18x411H7qD?p=34&spm_id_from=pageDriver
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录