C语言位运算应用

用一个无符号的整形的每一位代表一个任务,1代表任务完成,0代表任务未做;


#include<stdio.h>
#define BIT(x) (1<<(x)) //带参数的宏定义,编译与处理后,
                        //代码里BIT(0)===(1<<(0))1左移0位
                        //BIT(1)===(1<<(1))1左移1位
                        //BIT(2)===(1<<(2))1左移2位
  
                      //每左移一位相当于*2,BIT(0)=1,BIT(1)=2,BIT(2)=4。。。
enum Enumtask {
    Etask1 = BIT(0),//1
    Etask2 = BIT(1),//10
    Etask3 = BIT(2),//100
    Etask4 = BIT(3),//1000
    Etask5 = BIT(4),//10000
    Etask6 = BIT(5),//100000
    Etask7 = BIT(6),//1000000
    Etask8 = BIT(7),//10000000
    Etask9 = BIT(8),//100000000
    Etask10 = BIT(9),//100000000
};

unsigned int task = 0;//刚开始所有任务都未执行。

int main()
{
    if (task & Etask7)//按位与,Etask=1000000,如果task第七位为1,则结果为1,否则结果为0
    {
        printf("任务7已经做过了\n");
    }
    else
    {
        //执行任务7
        printf("任务7未完成,执行任务7\n");
        task |= Etask7;//标记任务7执行完成
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值