四、表达式
11、位操作符
操作符 | 功能 | 用法 |
~ | 按位非 | ~exp |
<< | 左移 | exp1<<exp2 |
>> | 右移 | exp1>>exp2 |
& | 按位与 | exp1&exp2 |
^ | 按位异或 | exp1^exp2 |
| | 按位或 | exp1|exp2 |
&= | 按位与赋值 | exp1&=exp2 |
^= | 按位异或赋值 | exp1^=exp2 |
|= | 按位或赋值 | exp1|=exp20 |
位操作符把操作数解释成有序的位集合,位集合可能是独立的,也可能组成域。在C++中,位集合通常用整数类型表示【粗浅的理解就是把数用二进制表示,然后对每一个位进行处理】,每个位代表一个二进制位【位操作符只能对二进制位进行操作】。在位域里,可以限制位长度,形式为【如果限制了长度,能够更加精确分配内存空间】:
type fieldName : width;
C++有两种方式来表示类向量:
1、使用内置整型:int 【一般使用unsigned int】;
2、使用标准库中的bitset类【用来管理位向量的基本形式和基本操作】
"~"等操作符对一个位向量的每一位进行翻转,0变1,1变0;
"&"、"|"、"^"对两个位向量进行逻辑判断,如果逻辑正则为1,不符合则为0;
"<<"、">>"对位向量进行移位操作【左移高位删除,低位补零】【如果是有符号数,得考虑最高位的符号变换】【右移高位补符号数,低位删除】:
short a = 9115; //0010001110011011
a<<1; //0100011100110110
a<<2; //1000111001101100
short c = -32766; // 1000000000000010
c>>1; //1100000000000001
如果加上赋值,就是把等号右边和左边的位向量先进行逻辑运算,然后把逻辑运算的结果赋值给左值。