在PHP中按位运算?

我明白,对于许多低级编程(比如编写设备驱动程序,低级图形,通信协议数据包组装和解码),按位操作是必需的。 我已经做了好几年PHP,并且在PHP项目中很少看到按位操作。

你能给我一些用法的例子吗?


您可以将它用于位掩码来对事物的组合进行编码。 基本上,它通过赋予每个位的含义来工作,所以如果你有00000000 ,每个位代表一些东西,除了是一个单一的十进制数。 假设我对要存储的用户有一些偏好,但我的数据库在存储方面非常有限。 我可以简单地存储十进制数并从中推导出哪些首选项被选中,例如92^3 + 2^000001001 ,所以用户具有首选项1和首选项4。

 00000000 Meaning       Bin Dec    | Examples
 │││││││└ Preference 1  2^0   1    | Pref 1+2   is Dec   3 is 00000011
 ││││││└─ Preference 2  2^1   2    | Pref 1+8   is Dec 129 is 10000001
 │││││└── Preference 3  2^2   4    | Pref 3,4+6 is Dec  44 is 00101100
 ││││└─── Preference 4  2^3   8    | all Prefs  is Dec 255 is 11111111
 │││└──── Preference 5  2^4  16    |
 ││└───── Preference 6  2^5  32    | etc ...
 │└────── Preference 7  2^6  64    |
 └─────── Preference 8  2^7 128    |

进一步阅读

  • http://www.weberdev.com/get_example-3809.html
  • http://stu.mp/2004/06/a-quick-bitmask-howto-for-programmers.html
  • 为什么我应该在PHP中使用bitwise / bitmask?
  • http://en.wikipedia.org/wiki/Mask_%28computing%29

  • 按位操作在凭证信息中非常有用。 例如:

    function is_moderator($credentials)
    { return $credentials & 4; }
    
    function is_admin($credentials)
    { return $credentials & 8; }
    

    等等...

    这样,我们可以在一个数据库列中保留一个简单的整数以获得系统中的所有凭证。

    链接地址: http://www.djcxy.com/p/9893.html

    上一篇: Bitwise operations in PHP?

    下一篇: PHP assignment operator =&