一、 位运算
运算符
& 位与
| 位或
^ 位异或
~ 取反
<< 位左移
>> 位右移
1. 位于运算符
位于运算符“&”是双目运算符,作用:将两个二进制串进行位与运算。
运算规律 :“全真则真,一假全假”———“1”为真,“0”为假。
例如:1 & 1 = 1, 1 & 0 or 0 & 1 = 0, 0 & 0 = 0
求 13 & 21
这里是引用
00001101
&) 00010101
——————————
00000101
则 13 & 21 = 5
特殊作用:根据奇数的二进制数的第一位为1,偶数的二进制数第一位为0,可以利用 位于运算符“&”来判断一个十进制数的奇偶性。即 奇数 & 1 = 1, 偶数 & 1 = 0。
2. 位或运算符
位或运算符“|”是双目运算符,作用:将两个二进制串进行或运算。
运算规律:“有真则真,全假才假”
例如:1 | 1 = 1, 1 | 0 or 0 | 1 = 1, 0 | 0 = 0,
求 13 | 21
这里是引用
00001101
|) 00010101
——————————————
00011101
则 13 | 21 = 29
特殊作用:(待补充)。
3. 位或与运算符
位异或运算符“^”是双目运算符,作用:将参加运算的的两个数对应的二进制位进行异或运算。
运算规律:“不同则真,相同则假”
例如:1 ^ 1 = 0, 0 ^ 0 = 0, 1 ^ 0 or 1 ^ 0 = 1,
求:13 ^ 21
这里是引用
00001101
^) 00010101
———————————————
00011000
则 13 ^ 21 = 24
特殊作用:a ^ b = b ^ a, a ^ b = c , a ^ c = b , b ^ c =a
注:利用“1”,还可以对一个二进制数的特定位进行取反
4. 位反运算符
违反运算符“~”是单目运算符,作用:将操作数按位取反。
运算规律:“真为假,假为真”
例如:~ 1 = 0 , ~ 0 = 1,
求:~13
这里是引用
~) 0000000000000000000000001101
——————————————————————————————————
1111111111111111111111110010
则 略……
特殊作用:C语言中可以用于读取到文件尾
while(~scanf("")) <===> while(scanf("") != EOF)
5. 位左移运算符
位左移运算符“<<”是双目运算符,作用:将二进制数尾部填0,长度加1。
格式:操作数 << 位数
例如:(二进制数)1111 < < 1 = 11110, 1 << 10 = 1024(等价于1 * (2^10))……
特殊作用:(待发现)。
6. 位右移运算符
位右移运算符“>>”是双目运算符,作用:将二进制串去尾数,长度减1。
格式:操作数 << 位数
例如:(二进制数)1 >> 1 = 0, 64 >> 6 == 1(等价于64/(2^6))。
特殊作用:(待发现)。