小甲鱼 P55 移位和位操作的应用
小甲鱼 P55 移位和位操作的应用
左移位运算符
11001010 << 2
右移位运算符
11001010 >> 2
#include <stdio.h>
int main(void)
{
int value = 1;
while (value < 1024)
{
//左移,每左移一位,是乘以2
//左移两位,乘以2^2
//左移三位,乘以2^3
value <<= 1; // value = value << 1;
printf("value = %d\n", value);
}
printf("\n\n");
value = 1024;
while (value > 0)
{
//右移一位,除以2^1
//右移两位,除以2^2
value >>= 2;//除以4
printf("value = %d\n", value);
}
return 0;
}
应用
掩码:一串二进制的数字,通过与目标数字按位操作来达到屏蔽指定位的需求而实现。
例如一个配电箱:
判断主卧是否开启:
判断结果是否为136,就能知道主卧的开启状态。
if ((value & mask) == mask)
{
printf("Open!\n");
}
打开位(可能需要确保某个位的值必须是打开状态)
按位或:任何数与0按位或,运算结果还是得到它本身
例如:确保主卧是开启的状态
关闭位
按位与
转置位
将一个二进制位取反