下面的位运算符在现实世界中有哪些用例?
和 XOR 不 或 左/右转
下面的位运算符在现实世界中有哪些用例?
和 XOR 不 或 左/右转
当前回答
它们主要用于位操作(惊喜)。下面是在PHP代码库中找到的一些实际示例。
字符编码:
if (s <= 0 && (c & ~MBFL_WCSPLANE_MASK) == MBFL_WCSPLANE_KOI8R) {
数据结构:
ar_flags = other->ar_flags & ~SPL_ARRAY_INT_MASK;
数据库驱动程序:
dbh->transaction_flags &= ~(PDO_TRANS_ACCESS_MODE^PDO_TRANS_READONLY);
编译器实现:
opline->extended_value = (opline->extended_value & ~ZEND_FETCH_CLASS_MASK) | ZEND_FETCH_CLASS_INTERFACE;
其他回答
我很惊讶,没有人为互联网时代选择一个显而易见的答案。计算子网的有效网络地址。
http://www.topwebhosts.org/tools/netmask.php
我经常使用位操作将选项的组合存储在一个整数中。
int options = 0;
其中OPTION1可以定义为1,OPTION2定义为2,OPTION3定义为4,OPTION4定义为8,OPTION5定义为16,…
void addOption(int option)将使用|操作符向options中添加一个选项。
boolean hasOption(int option)将使用&操作符来测试选项中的选项。
按位&用于屏蔽/提取字节的某一部分。
1字节变量
01110010
&00001111 Bitmask of 0x0F to find out the lower nibble
--------
00000010
特别是移位运算符(<< >>)经常用于计算。
您可以使用它们作为一种快速而不常用的散列数据的方法。
int a = 1230123;
int b = 1234555;
int c = 5865683;
int hash = a ^ b ^ c;
我们使用位标记,使会话较小的登录权限在我们的内部网站。