C基础语法2
C基础语法2
按位与&
- 语法特点:和1按位与保持不变,和0按位与清0
- 应用场景:将指定位置 0
int data = 127;//指定第三位第五位清0
//data=data&1101 0111;
data = data & 0xd7;
printf("%#x\n", data);
按位或|
- 语法特点:有1为1,全0为0
- 应用场景:将指定位置 1
按位取反~
按位取反 0变1 1变0
按位异或^
- 基本语法:相同为0 不同为1
- 语法特点:和0异或保持不变 和1异或取反
- 应用场景:将置定位取反
右移左移
不同编译器的右移情况不同
// 1000 0000 0000 0000 0000 0000 0000 0110
// 1111 1111 1111 1111 1111 1111 1111 1001
// 1111 1111 1111 1111 1111 1111 1111 1010
// 算术右移补1 1111 1111 1111 1111 1111 1111 1111 1111 0xffffffff
// 逻辑右移补0 0000 0000 0000 0000 1111 1111 1111 1111 0xffff
int data = -10;
data = data >> 16;
if (data == 0xffffffff)
{
printf("算术右移%#x\n", data);
}
else if (data == 0xffff)
{
printf("逻辑右移%#x\n", data);
}