PHP中的按位运算?

时间:2010-01-25 11:02:24

标签: php bit-manipulation

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

你能举例说明用法吗?

2 个答案:

答案 0 :(得分:47)

您可以将它用于位掩码来编码事物的组合。基本上,它通过赋予每个位一个含义来工作,所以如果你有00000000,每个位代表一些东西,除了也是一个十进制数。假设我对要存储的用户有一些偏好,但我的数据库在存储方面非常有限。我可以简单地存储十进制数并从中导出,选择哪些偏好,例如, 9 2^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    |

进一步阅读

答案 1 :(得分:18)

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

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

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

依旧......

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