int result = 0;
if (cs_config.enable_http)
{
result |= 1;
}
if (cs_config.enable_https)
{
result |= 2;
}
//例子2
enum HttpType
{
IPV4 = 1,
IPV6 = 2,
HTTP = 4,
HTTPS = 8
};
int type = IPV4;
if (setting.enable_http)
{
type |= HTTP;
}
if (setting.enable_https)
{
type |= HTTPS;
}
g_settings->SetOptionValue(InternetHTTPTypeKey, type);
按位或(OR) 按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1。例如
0101(十进制5) OR 0011(十进制3) = 0111(十进制7)
在C类程序设计语言中,按位或操作符是"|"。这一操作符需要与逻辑或运算符(||)区别开来。按位或能够将每一位看做旗标;在二进制数中的每一位可以表示不同的布尔变量。应用按位或操作可以将二进制数的某一位设为1。例如
0010(十进制2) 能够看做包含4个旗标的组合。第1,2,4旗标为0;第3个旗标为1。利用按位或可以将第1个旗标设置为1,而其他旗标不变。
0010(十进制2) OR 1000(十进制8) = 1010(十进制10) 这一技巧通常用来保存程序中的大量布尔变量。