#include<stdio.h>unsignedintset_bit(unsignedintnum,intpos,intflag){intn=1;n=n<<pos;//将n的第pos位置1,其他全为0if(flag==0){num=num&(~n);//将num的n位置0}elseif(flag==1){num=num|n;}returnnum;}

调用如下:

inta=0x10;//位置从0开始a=set_bit(a,1,1);//将a的第2位,置1,结果为10010即0x12