PHP位运算详解
PHP位运算一览表
例子 | 名称 | 结果 |
$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”,若不是整除则则为比值小的最近一个整数,如值为-4.12 结果为-5;如值为4.23 /0.5 结果为4 /0) |
位移在 PHP中是数学运算。向任何方向移出去的位都被丢弃。
左移时右侧以零填充,符号位被移走意味着正负号不被保留,符号位随字符变化而变化。
右移时左侧以符号位填充,符号位不变。
注意:
php没有无符号数,也就是说,php中的数都是有符号的;
计算机中的运算都是以补码的形式参加运算的;
php位运算过程如下:(以8位计算机为例)
以2&-7=?计算为例:
1 2 3 4 5 6 7 8 |
(1)计算2的补码: 2->原码:00000010->反码:00000010->补码:00000010 (2)计算-7的补码: -7->原码:10000111->反码:11111000->补码:11111001 (3)计算2&-7的补码->反码->原码 2&-7补码:00000000->反码:00000000->原码:00000000 (4)有2&-7原码得到2&-7的值 所以2&-7 = 0 |
2022服务器特惠,真便宜!
①真便宜:阿里云服务器69元1年,203元3年(价格很低)
②代金券:2022阿里云代金券一键领取中
③腾讯云:2022腾讯云服务器秒杀特惠88元起
④免费提供技术支持:
原创文章,作者:PHP面试题,如若转载,请注明出处:http://www.phpmianshiti.com/tiku/weiyunsuan/64/