一、&
&——按位与(二进制之间);&& 逻辑与(也叫并且);与按位与(&)完全不同;一般用于信息采集;例如:
#include<stdio.h> #include<stdlib.h> int main(void) { int a = 5; //二进制为——0101 int b = 7; //二进制为——0111 /* 0 1 0 1 0 1 1 1 ———————————— 按 位 相 与 0 1 0 1 0101——>等于5 */ int c; c = a & b; printf("%d\n", c); c = a && b; //逻辑运算符输出结果只为0 或 1 //a 与 b printf("%d\n", c); system("pause"); return 0; }———————————————运行结果———————————————
二、 |
|——按位或| | 逻辑或(也叫或者) #include<stdio.h> #include<stdlib.h> int main(void) { int a = 5; //二进制为——0101 int b = 7; //二进制为——0111 int c; c = a | b; printf("%d\n", c); c = a || b; //逻辑运算符输出结果只为0 或 1 printf("%d\n", c); system("pause"); return 0; } /* 0 1 0 1 0 1 1 1 ———————————— 按 位 相 或 0 1 1 1 0111——>等于 7 */———————————————运行结果———————————————
三、 ~
~ ——按位取反 5 的二进制为——0101 按位取反为 1010根据二进制为1010求原来的数(不懂的可以去看原码补码那一篇文章)
因为二进制符号位为1——>原数为负数(->取反(0101)->加一—>0110)= -6
四、^
按位异或——^相同为零, 不同为一 1 ^ 0 =1; 1 ^ 1 =0;五、 <<
<<——按位左移i=<<3表示把 i 的二进制位向左移3位,右边补0 左移n位相当于乘以二的n次方六、>>
>>——按位右移 i=>>3 表示把 i 的二进制位向右移3位算数右移,左边补0逻辑右移,看最高位来补(为1补1 ,为0补0) 左移n位相当于除以二的n次方(前提不能溢出)位运算符运算速度比算数运算符更快 eg:1) a = i /8; 2) b = >>3;
2)比1)运算速度快
