立即学习:https://edu.youkuaiyun.com/course/play/8088/165752?utm_source=blogtoedu
1.位的概念
一个int型数据占4个字节的内存。一个char型数据占一个字节。
一个字节由8个二进制位组成。最左边的称为最高位,最右边的称为最低位;每一个二进制位的值是0或者1(二进制数,只有0,1两个数字,不能是其他数字);
2. 位运算符介绍:
(1)按位与运算符&:
参加运算的两个运算量,如果两个相应的位都为1,则该位的结果为1,否则为0;
(2)按位或运算符|:
参加运算的两个运算量,如果两个相应的位有一个为1,则该位的结果为1,否则为0;
(3)按位异或运算符^:
参加运算的两个运算量,如果两个相应的位相同,则结果为0,否则结果为1
如果某些位想翻转(从0变成1,从1变成0),那这个位可以和1做异或运算;
如果某些位想保留,那这个位可以和0做异或运算;
比如:有个二进制数,01111010,我们希望他低四位翻转,高四位保持不变。
01111010
00001111
------------------
01110101
(4)取反运算符~:
是单目运算符,只有一个运算量,用来对一个数字进行按位取反,也就是0变成1,1变成0;
(5)左移运算符 <<
将一个数的二进制位左移若干位,右侧补0;
每左移一位都相当于*2
unsigned int tempvalue = 15 << 1; //30
01111
---------
11110 = 30
(6)右移运算符 >>
将一个数的二进制位右移若干位,超出最低位的被舍弃,左边高位补0;
每右移一位都相当于除以2
(7)位运算符和赋值运算符可以结合使用,比如说:
&= , |= , >>= ,<<= , ^=
如上所示,=总是在右边。
例:a &= b 等价于 a = a & b;