Loading

位运算函数参数多选项

位运算函数参数多选项

const OPT_A = 1;
const OPT_B = 2;
const OPT_C = 4;
const OPT_D = 8;

/**
 * @param int $opt
 * 判断参数选用函数
 * 首先参数必须是2的次方
 * 之后2的任何次方 使用或运算 2的任何次方 如 1|2, 2|4  都是一种相加, 
 * 因为 二进制运算 某个二进制位为1, 二进制位运算结果就是1的原因, 所以二的次方位运算 二的次方位等于直接相加, 
 * 因此 参数只能是2的次方,否则将不准确
 * 
 * 判断是否选用, 则使用与运算, 2进制运算, 2个数为都为1, 数位才为1, 
 * 如 选项或运算后 总值为10 则 2&10 = 0010&1010 必定有2, 则该参数必经选用
 */
function option(int $opt)
{
    if (OPT_A & $opt) {
        echo 'have ' . OPT_A, PHP_EOL;
    }
    if (OPT_B & $opt) {
        echo 'have ' . OPT_B, PHP_EOL;
    }
    if (OPT_C & $opt) {
        echo 'have ' . OPT_C, PHP_EOL;
    }
    if (OPT_D & $opt) {
        echo 'have ' . OPT_D, PHP_EOL;
    }
}

option(5);

运算结果

have 1
have 4
posted @ 2021-01-21 09:09  chnyang  阅读(117)  评论(0编辑  收藏  举报