我知道按位操作对于许多低级编程是必需的,例如编写设备驱动程序,低级图形,通信协议数据包组装和解码。我已经做了几年PHP,我在PHP项目中很少见到按位操作。
你能举例说明用法吗?
答案 0 :(得分:47)
您可以将它用于位掩码来编码事物的组合。基本上,它通过赋予每个位一个含义来工作,所以如果你有00000000
,每个位代表一些东西,除了也是一个十进制数。假设我对要存储的用户有一些偏好,但我的数据库在存储方面非常有限。我可以简单地存储十进制数并从中导出,选择哪些偏好,例如, 9
2^3
+ 2^0
为00001001
,因此用户具有偏好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; }
依旧......
这样,我们可以在一个数据库列中保留一个简单的整数,以便在系统中拥有所有凭据。