一些位操作函数

来源:互联网 发布:淘宝第三方担保交易 编辑:程序博客网 时间:2024/05/28 11:48
 转自http://www.hseda.com/mcu/cbitop.htm

#define uchar unsigned char

/*测试变量某一位是否为‘1’,是返回真,否返回假,num为待测试的数,bit为位数,其值从07,下同*/

uchar bittest(uchar num,uchar bit)

{ if(num>>bit&0x01==1)

return 1;

else

return 0;

}

uchar bitclr(uchar num,uchar bit) /*清除某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

return num&~bit_value[bit];

}

uchar bitset(uchar num,uchar bit) /*设置某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

return num|bit_value[bit];

}

uchar bitcpl(uchar num,uchar bit) /*取反某一位*/

{

uchar bit_value[]={1,2,4,8,16,32,64,128};

if(num>>bit&0x01==1)

return num&~bit_value[bit];

else

return num|bit_value[bit];

}

/*以下主程序演示,调用时,可以直接给出数值,也可以给出变量名*/

void main(void)

{

uchar xx=0xfe;

xx=bitset(xx,0);

printf("The set out is %x/n",xx);

printf("The clr out is %x/n",bitclr(255,0));

printf("The test out is %x/n",bittest(0xff,0));

printf("The cpl out is %x/n",bitcpl(0x00,7));

}

以上是以TC为例编写的主程序,各函数在其它C语言中也一样可用。

原创粉丝点击