如何才能给C语言增加几个位操作函数

电子说

1.3w人已加入

描述

  在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在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;

  }

  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 ”,xx);

  printf(“The clr out is %x ”,bitclr(255,0));

  printf(“The test out is %x ”,bittest(0xff,0));

  printf(“The cpl out is %x ”,bitcpl(0x00,7));

  }

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分