一、6种基本的位操作
& 按位与运算
| 按位或运算
^ 按位异或运算
<< 按位左移运算
>> 按位右移运算
~ 按位补运算
1、按位与:测试两个二进制数,如果两个数对应的位值均为1,则该位值返回1,如果不同时为1,则该位值返回0。
01001011
& 00010101
-------------
00000001
2、按位或:测试两个二进制数,如果两个数对应的位值至少有一个为1,则该位值返回1,仅当该位值同时为0时,则该位值返回0。
01001011
| 00010101
-------------
01011111
3、按位异或:测试两个二进制数,如果两个数对应的位值不相同,则该位值返回1,如果两个数对应的位值相同,则该位值返回0。
01001011
^ 00010101
-------------
01011110
4、按位左移:测试一个二进制数,将二进制中的所有位向左移动,并用0填充空出的位。
01001011
<< 2
-------------
00101100
5、按位右移:测试一个二进制数,将二进制中的所有位向右移动,(并用0填充空出的位??)
01001011
<< 2
-------------
??010010
注意:在按位右移中,填充位是符号“?”的使用。左移操作中用0填充空出的位,右移操作仅当操作的二进制数是一个无符号数时才用0填充。如果操作数时有符号数,那么右移操作将用符号位或者0(根据具体要求)填充空出的位。一般情况下,最安全的做法是不要右移有符号的操作数。
6、按位补:测试一个二进制数,将二进制是中的所有位取反。
01001011
~
------------
10110100
二、基本的位运算的应用