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语言
    +关注

    关注

    183

    文章

    7646

    浏览量

    146205
  • 程序
    +关注

    关注

    117

    文章

    3849

    浏览量

    85500
  • 运算
    +关注

    关注

    0

    文章

    132

    浏览量

    26842
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问单片机开发的程序设计语言主要有哪几种

    单片机开发的程序设计语言主要有哪几种
    发表于 01-14 08:29

    C语言主要特点

    。 5.语法限制不太严格,程序设计自由度大。 6.C语言允许直接访问物理地址,能进行(bit)操作,能够实现汇编
    发表于 01-05 07:41

    C语言嵌入式系统编程注意事项-内存操作

    的99%,因为C语言最精华的内涵皆在内存操作中体现。 我们之所以在嵌入式系统中使用C语言进行程序
    发表于 01-04 07:31

    什么是

    数据结构,称为“域”或“段”。 所谓“域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。 每个域有一个域名,允许在程序
    发表于 12-15 08:07

    为什么单片机还在用C语言编程?

    说起单片机我们就会想到C语言,单片机为什么还在用C语言编程?现在有很多很好用的高级语言,如VC、PYTHON、PHP等等,为什么这些
    发表于 11-28 07:37

    用于单片机几种C语言算法

    和1-a。为计算方便,a取一整数,1-a用256-a,来代替,计算结果舍去最低字节即可,因为只有两项,a和1-a,均以立即数的形式编入程序中,不另外设表格。虽然采样值为单元字节(8A/D)。为保证运算
    发表于 11-27 06:00

    C语言特性

    1、高效性:直接操作硬件 C 语言代码的执行效率极高,这是其最为显著的优势之一。它能够直接访问硬件资源,与底层硬件进行紧密交互,充分发挥硬件的性能潜力。在嵌入式开发中,硬件资源往往十分有限,对
    发表于 11-24 07:01

    C语言操作

    C 语言操作符包括按与( )、按或(|)、按
    发表于 11-21 07:52

    C语言宏拼接运算符典型使用

    C语言中,##运算符(称为[size=16.002px]标记拼接运算符)用于宏定义中将两个标记(token)拼接成一个新的标记。它在预处理阶段处理,常用于动态生成变量名、函数名或类型
    发表于 11-20 08:27

    C语言和单片机C语言有什么差异

    有些扩展,及一些特殊写法如C51扩展的 data xdata bit sbit一类的,还有一些中断程序写法 void int() interrput 1一类的。 2、C是一门高级语言
    发表于 11-14 07:55

    第4章 C语言基础以及流水灯的实现(4.3 4.4)

    的符号分别是:+、-、*、/、%。 C语言有一个很重要的赋值运算符“=”,前边程序有使用过。在C语言
    的头像 发表于 10-29 15:30 447次阅读

    运算放大器的使用详细说明

    运算放大器权威指南 第三版 获取完整文档资料可下载附件哦!!!! 如果内容有帮助可以关注、点赞、评论支持一下哦~
    发表于 08-01 13:51

    C语言精彩编程百例-364页

    内容提要 C是一种通用的程序设计语言,它包含了紧凑的表达式、丰富的运算符集合、现代控制流以及数据结构等四个部分。C语言功能丰富,衣达能力强,
    发表于 06-13 17:28

    贴片三极管上的印字与真实名称的对照表详细说明

      本文档的主要内容详细介绍的是贴片三极管上的印字与真实名称的对照表详细说明
    发表于 05-28 09:05 110次下载

    瑞芯微rv1106开发资料 rv1106数据手册 rv1106详细说明书免费下载

    瑞芯微rv1106开发资料 rv1106数据手册 rv1106详细说明书免费下载
    的头像 发表于 05-19 11:16 7410次阅读
    瑞芯微rv1106开发资料 rv1106数据手册 rv1106<b class='flag-5'>详细说明</b>书免费下载