位运算操作
左移:
[数据]乘法 * 2 (二进制下的移位)
例如:m<< 1 = m*2
m << n = m * 2^n
4 : 0 0 1 0 0
8: 0 1 0 0 0
右移:
第一位与符号变量有关
除法 m>> n = m / 2^n
int a; a>> n
unsigned int a; a >>n
与或非:(&.|)
A & 0 ====> 0 (&:屏蔽,屏蔽低八位)
A & 1 =====> 1 (&:取出,取出高八位)
&:清0器
A | 0 =====> A (| : 保留 )
A | 1 ====> 1
| : 设置器
int a;
a | (0x1<<n) #将第n位设置高电平(1),其余为低电平(0)
int a;
a & ~(0x1<<n) #对第n位清0
异或、取反(^ ~)
1 ^ 1 = 0 (相同取0,为假;不同取1,为真)
用于交换 a ,b 的值
int a=20;
int b=30;
a = a ^ b;
b = a ^ b;
a = a ^ b;
a = 30, b = 20
~ : 逐位取反 (与!不同)
static
修饰三种数据
1)函数内的变量
int fun(){
int a; ====> static int a;
}
2) 函数外部的变量(全局变量)
int a ; ====> static int a ;
int fun() {
}
3) 函数的修饰符
int fun() ===> static int fun()
const
常量的定义(只读的变量)
const int a = 100 (a不能变)