C语言的几种位操作运算程序详细说明
在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一些位操作功能 。
文章插图
#define uchar unsigned char
/*测试变量某一位是否为‘1’,是返回真,否返回假,num为待测试的数,bit为位数,其值从0到7,下同*/
uchar bittest(uchar num,uchar bit)
{ if(num》》bit&0x01==1)
return 1;
else
return 0;
【C语言的几种位操作运算程序详细说明】}
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 %xn”,xx);
printf(“The clr out is %xn”,bitclr(255,0));
printf(“The test out is %xn”,bittest(0xff,0));
printf(“The cpl out is %xn”,bitcpl(0x00,7));
}
推荐阅读
- 大学加入社团有啥好处
- 全国最好的军校是什么学校
- 大学修双学位有用吗,双学位的好处
- 毕业以后个人档案存放在哪里
- 电梯井道积水防水处理措施
- 巧解通力3000电梯的0026故障
- 电梯各种部件的日常检查
- 电梯运行抖动的原因及对策
- 电梯安装质量核验中的问题
- 可充电led台灯电路图