0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言的几种位操作运算程序详细说明

Wildesbeast 来源:福星电子网 作者:福星电子网 2020-07-18 12:00 次阅读

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

}

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

    关注

    180

    文章

    7522

    浏览量

    127524
  • 程序
    +关注

    关注

    114

    文章

    3629

    浏览量

    79497
  • 运算
    +关注

    关注

    0

    文章

    125

    浏览量

    25658
收藏 人收藏

    评论

    相关推荐

    3KW工业变频器电路设计方案详细说明

    3KW工业变频器电路设计方案详细说明
    的头像 发表于 03-19 08:33 121次阅读
    3KW工业变频器电路设计方案<b class='flag-5'>详细说明</b>

    STM32开发中的位运算以及位带操作

    操作。同时,STM32还提供了位带操作,使得对单个位进行操作更加方便。本文将详细介绍STM32开发中的位运算和位带
    的头像 发表于 02-02 14:38 272次阅读

    javascript规定了几种语言类型

    和移动应用程序。JavaScript的灵活性和易用性使其成为开发人员最喜爱的编程语言之一。本文将详细介绍JavaScript的几种语言类型。
    的头像 发表于 12-03 11:37 449次阅读

    C语言运算符的使用方法

    详细介绍了C语言表达式、算术运算符、赋值运算符、关系运算符、条件结构、逻辑运算符、位
    发表于 11-02 11:30 493次阅读
    C<b class='flag-5'>语言</b><b class='flag-5'>运算</b>符的使用方法

    在51单片机C语言程序如何保存运算过程中的小数位?

    在51单片机C语言程序如何保存运算过程中的小数位?
    发表于 10-20 06:30

    黑金Spartan6开发板的Verilog教程详细说明

    黑金Spartan6开发板的Verilog教程详细说明
    发表于 10-11 18:02 7次下载

    求助,关于C语言属于运算的问题

    写了一个51单片机的程序,但是运行不正常,使用网络在线编译的工具验证了一下,发现不对,程序如下截图: 程序中x的值我设置为0xa5,然后听过一个按
    发表于 10-08 08:39

    电子管的代换资料详细说明

    本文档的主要内容详细介绍的是电子管的代换资料详细说明
    发表于 09-26 07:24

    KT142C-sop16语音芯片ic的串口指令详细说明_默认9600指令可设

    KT142C-sop16语音芯片ic的串口指令详细说明_默认9600指令可设
    的头像 发表于 09-07 12:00 412次阅读
    KT142C-sop16语音芯片ic的串口指令<b class='flag-5'>详细说明</b>_默认9600指令可设

    C语言基础知识(一)

    、嵌入式系统和科学计算等领域。作为一名程序员,了解C语言的基础知识是非常重要的。本文将详细介绍C语言
    发表于 08-10 15:16

    C语言中位运算的使用技巧

    程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作
    发表于 08-10 09:17 321次阅读

    C语言基础知识(一)

    、嵌入式系统和科学计算等领域。作为一名程序员,了解C语言的基础知识是非常重要的。本文将详细介绍C语言
    发表于 08-07 16:51

    C语言基础(7)--位运算

    程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。C语言中位运算符: &(按位与)、|
    的头像 发表于 06-29 11:25 1303次阅读
    C<b class='flag-5'>语言</b>基础(7)--位<b class='flag-5'>运算</b>

    C语言基础知识(4)--运算

    C语言中,运算符包括有算术运算符、关系运算符、逻辑运算符和位运算
    的头像 发表于 06-15 09:38 2221次阅读