c++中的位运算符用得比较多,比如MFC传参数时经常使用,下面是它的一个很简单的用法:
#include "stdafx.h"
#include <iostream>
#define L8 1
#define L16 2
#define L32 4
#define L64 8
#define COMPLEX 0x10
#define FLOAT 0x20
#define SIGN 0x40
// 数值类型
enum type
{
t_8u = L8, //8位无符号整型
t_8s = L8 | SIGN, //8位有符号整型
t_8sc = L8 | SIGN | COMPLEX, //8位有符号(整)复数
t_8f = L8 | SIGN | FLOAT, //8位有符号浮点数
t_16u = L16, //16位无符号整数
t_16s = L16 | SIGN, //16位有符号整数
t_16sc = L16 | SIGN | COMPLEX, //16位有符号(整)复数
t_16f = L16 | SIGN | FLOAT //16位有符号浮点数
// and so on
};
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
type t;
t = t_8f;
cout << "8L?" << bool(t & L8) << "\n"
<< "sign?" << bool(t & SIGN) << "\n"
<< "float?" << bool(t & FLOAT) << "\n"
<< "complex?" << bool(t & COMPLEX) << endl;
return 0;
}
通过|和&,我们就可以通过位标志来判断一些特征,位运算还可以使参数的组合非常直观,。