4783|16

6992

帖子

11

TA的资源

版主

楼主
 

C语言设置/获取某一个变量中某一位的值 [复制链接]

 
7分芯积分 * 回复本帖可获得 1 分芯积分奖励! 每人限 1 次
 

在操作寄存器中都需要用到设置/获取某一位的值。

#define GetBit(m,n) ((m)>>y)&0x01)   //获取m的第n位的值 返回0或1

#define SetBit(m,n)  m |= (1<<n)        //将m的n位置1

#define ClrBit(m,n).  m &= ~(1<<n)    //将m的n位清0

 

祝大年新年快乐!回帖有奖励哦!

最新回复

简单,直接,明了,效率高,51基本都这么操作,逻辑运算多,运行效率高   详情 回复 发表于 2023-2-17 13:52
点赞(2) 关注(2)
 
 

回复
举报

845

帖子

3

TA的资源

版主

沙发
 

回帖奖励 +1 分芯积分

目前还没碰到过收藏一下

 

 
 
 

回复

2640

帖子

6

TA的资源

五彩晶圆(初级)

板凳
 

回帖奖励 +1 分芯积分

想起了msp430单片机的位操作


 
 
 

回复

118

帖子

0

TA的资源

一粒金砂(中级)

4
 

回帖奖励 +1 分芯积分

学习了

 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

5
 

回帖奖励 +1 分芯积分

学习了,收藏

个人签名

~~高性价比APT32单片机/MCU~~

 
 
 

回复

4932

帖子

12

TA的资源

版主

6
 

回帖奖励 +1 分芯积分

按照内存对位操作 直接对地址操作

点评

版主大佬新年好,去了老丈人家里吗?效果怎么样,准备造兔宝宝了吧。  详情 回复 发表于 2023-1-24 08:40
 
 
 

回复

6992

帖子

11

TA的资源

版主

7
 
吾妻思萌 发表于 2023-1-23 21:21 按照内存对位操作 直接对地址操作

版主大佬新年好,去了老丈人家里吗?效果怎么样,准备造兔宝宝了吧。

 
 
 

回复

1305

帖子

0

TA的资源

纯净的硅(高级)

8
 

回帖奖励 +1 分芯积分

51时代嵌入式的基本操作,主要是那时候内存少,现在MCU内存大了,有些就不这样做了。

点评

用位操作,是不是速度快一些。现在有些hal库,要判断好多次,编程速度高,效率不高。  详情 回复 发表于 2023-1-24 12:49
 
 
 

回复

6992

帖子

11

TA的资源

版主

9
 
yang_alex 发表于 2023-1-24 08:50 51时代嵌入式的基本操作,主要是那时候内存少,现在MCU内存大了,有些就不这样做了。

用位操作,是不是速度快一些。现在有些hal库,要判断好多次,编程速度高,效率不高。

点评

是的。用位操作速度是会快一些,用来做标志(原来叫标志位)进行多条件复合判断很方便。现在MCU的主频普遍高,我们大多数需求可以满足。只有在需要压榨MCU性能时才会去抠位操作,再极端点可能会用汇编去抠位操作。位  详情 回复 发表于 2023-1-25 09:31
hal库效率低是老黄历了,现代的编译器开o1局部优化之后,hal库内部这些表达式都会被优化掉,效率跟直接写寄存器基本没啥区别,反而hal库的可移植性和可读性比标准库和寄存器好得多。另外如果对io操作时序要求比较高  详情 回复 发表于 2023-1-24 15:12
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

10
 

回帖奖励 +1 分芯积分

lugl4313820 发表于 2023-1-24 12:49 用位操作,是不是速度快一些。现在有些hal库,要判断好多次,编程速度高,效率不高。

hal库效率低是老黄历了,现代的编译器开o1局部优化之后,hal库内部这些表达式都会被优化掉,效率跟直接写寄存器基本没啥区别,反而hal库的可移植性和可读性比标准库和寄存器好得多。另外如果对io操作时序要求比较高的话,支持位带操作的单片机可以用位带操作,比读取寄存器做位运算再写入要快得多。


 
 
 

回复

1305

帖子

0

TA的资源

纯净的硅(高级)

11
 
lugl4313820 发表于 2023-1-24 12:49 用位操作,是不是速度快一些。现在有些hal库,要判断好多次,编程速度高,效率不高。

是的。用位操作速度是会快一些,用来做标志(原来叫标志位)进行多条件复合判断很方便。现在MCU的主频普遍高,我们大多数需求可以满足。只有在需要压榨MCU性能时才会去抠位操作,再极端点可能会用汇编去抠位操作。位操作不好的地方就是代码读起来繁琐些(其实C语言还好,自己命名好变量,读起来一样),需要熟悉位移操作。

点评

研究一下位的操作,可以改变编程的思路,有些一句话的事,如果用库就需要转好多弯,不知道编译后,会不会不用去转换。  详情 回复 发表于 2023-1-25 15:01
 
 
 

回复

132

帖子

0

TA的资源

一粒金砂(中级)

12
 

回帖奖励 +1 分芯积分

学习了

 
 
 

回复

6992

帖子

11

TA的资源

版主

13
 
yang_alex 发表于 2023-1-25 09:31 是的。用位操作速度是会快一些,用来做标志(原来叫标志位)进行多条件复合判断很方便。现在MCU的主频普 ...

研究一下位的操作,可以改变编程的思路,有些一句话的事,如果用库就需要转好多弯,不知道编译后,会不会不用去转换。

 
 
 

回复

331

帖子

0

TA的资源

一粒金砂(高级)

14
 

回帖奖励 +1 分芯积分

还是比较习惯用位操作,简单、直接、透明。。。

点评

我以前弄不明白,后面,总算整明白了,感觉比较快。  详情 回复 发表于 2023-1-31 15:27
 
 
 

回复

6992

帖子

11

TA的资源

版主

15
 
pcf2000 发表于 2023-1-31 10:51 还是比较习惯用位操作,简单、直接、透明。。。

我以前弄不明白,后面,总算整明白了,感觉比较快。

 
 
 

回复

307

帖子

4

TA的资源

一粒金砂(高级)

16
 

回帖奖励 +1 分芯积分

以前学32的操作寄存器编程的时候开始习惯按位来操作

 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

17
 

回帖奖励 +1 分芯积分

简单,直接,明了,效率高,51基本都这么操作,逻辑运算多,运行效率高

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表