C语言中位运算的应用

案例说明:

  • 检验游戏的日常任务有没有做。一共十个任务。

实现思想:

  • 能校验每个任务是否已经完成
  • 可以操作每个任务完成与否

实现思路:

  • 无符号整型变量可以存32位二进制数字,我们只需要10位
  • 枚举型可以把每个任务常量化
  • 联想位运算的特点,可以进行逻辑运算

代码如下:

#include<stdio.h>
#include<string.h>
#define BIN(x) (1<<(x))   //定义一个左移位运算的宏
enum tasklist			  //定义枚举型,用来表示每一个任务
{
	task1 = BIN(0),	//1   这里,1左移0个位置还是1                             
	task2 = BIN(1),	//10		1左移1个位置是(bin)10 =2
	task3 = BIN(2),	//100		以此类推....
	task4 = BIN(3),	//1000
	task5 = BIN(4),	//10000
	task6 = BIN(5),	//100000
	task7 = BIN(6),	//1000000
	task8 = BIN(7),	//10000000
	task9 = BIN(8),	//100000000
	task10 = BIN(9),//1000000000  每一行代表的十进制//1 2 4 8 16 32 64 128 256 512 

};
void main()  
{
	unsigned int daytask = 0;    //是32位二进制数0,这里存放整条任务线
	//我们操作的时候不要改变其他task的值!
	    daytask |= task7 ; //这里有意思 ,只改变第七位,其他的位置都不改变。因为是或运算 >>本质是把daytask的32位0,第七位变成了1
	if(daytask &= task7)  //检验任务有没有做
		printf("mission complete\n");
	else
		printf("mission not complete\n");

printf("断点");

return;
		
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值