首頁 >後端開發 >php教程 >请问有没有人给一个PHP位运算的实际应用场景?

请问有没有人给一个PHP位运算的实际应用场景?

WBOY
WBOY原創
2016-06-06 20:22:321391瀏覽

关于PHP的位运算,在以前基础的时候学习过,但是后来在真正的项目中,从来没用过,百度了一下,也没发现有个好的应用场景的例子,也就是说没有一个实际的项目业务逻辑的应用例子,这个具体作用是什么呢?难道是我接触的东西还太少了?

回复内容:

关于PHP的位运算,在以前基础的时候学习过,但是后来在真正的项目中,从来没用过,百度了一下,也没发现有个好的应用场景的例子,也就是说没有一个实际的项目业务逻辑的应用例子,这个具体作用是什么呢?难道是我接触的东西还太少了?

我把问题改了。我们应该讨论包含位移在内的一切位运算

php的位运算主要用于处理你不可知的上游数据。例如:

  • 上游数据源的规模巨大,大到必须用整数 + 标志位的手段来存储一系列布尔值的地步。

  • 上游数据源是一些底层硬件(例如 Arduino 或者其他单片机),这些硬件的存储器极其有限,存不了几个字节的数据,必须用位运算压缩存储。

事实上绝大多数php代码本身,几乎不需要引入位运算。毕竟到了php这一层,对存储和速度的敏感度也就没那么高了。
但php作为重要的适配器中间件,应对各种上层数据源和下层消费者的能力却是绝不可少的。

位运算确实用到的少。知道有这么回事,用时再查就行。

php的json_encode()函数,$option参数就是使用位运算

<code>json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);</code>

我有时候设计某些参数就是使用这种方式。


再补充一个,权限设计

把不同的权限分配到不同的因子数上,例如2 4 8 16 ...

然后用户的权限就可以是 2 | 8

存储的时候只用存一个数字

检查是否具备对应的权限就用位运算来检查

<code><?php // 权限因子: 2 4 8 16 32
$p = 2 | 8 | 32;  // 用户权限
$c = 2;           // 用于检查的权限

if (($p & $c) === $c) {
    echo '有权限';
} else {
    echo '没权限';
}</code></code>

你可以看下有关PHP DES或者RSA等等的对称加密使用到了位移。

另外,
位移操作的运算速度比一般的计算操作速度要快。

计算或判断ip地址: ip2long然后子网掩码移来移去

位运算就更多了, 很多内置函数的选项其实是标志位, (option1|option2)

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn