3842|16

5683

帖子

7

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
 
 
 

回复
举报

756

帖子

2

TA的资源

版主

 

回帖奖励 +1 分芯积分

目前还没碰到过收藏一下

 

 
 
 

回复

2153

帖子

4

TA的资源

五彩晶圆(初级)

 

回帖奖励 +1 分芯积分

想起了msp430单片机的位操作


 
 
 

回复

102

帖子

0

TA的资源

一粒金砂(中级)

 

回帖奖励 +1 分芯积分

学习了

 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(中级)

 

回帖奖励 +1 分芯积分

学习了,收藏

个人签名

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

 
 
 

回复

3612

帖子

11

TA的资源

版主

 

回帖奖励 +1 分芯积分

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

点评

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

回复

5683

帖子

7

TA的资源

版主

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

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

 
 
 

回复

1303

帖子

0

TA的资源

纯净的硅(高级)

 

回帖奖励 +1 分芯积分

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

点评

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

回复

5683

帖子

7

TA的资源

版主

 
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的资源

一粒金砂(中级)

 

回帖奖励 +1 分芯积分

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

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


 
 
 

回复

1303

帖子

0

TA的资源

纯净的硅(高级)

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

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

点评

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

回复

71

帖子

0

TA的资源

一粒金砂(中级)

 

回帖奖励 +1 分芯积分

学习了

 
 
 

回复

5683

帖子

7

TA的资源

版主

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

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

 
 
 

回复

330

帖子

0

TA的资源

一粒金砂(高级)

 

回帖奖励 +1 分芯积分

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

点评

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

回复

5683

帖子

7

TA的资源

版主

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

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

 
 
 

回复

307

帖子

4

TA的资源

一粒金砂(高级)

 

回帖奖励 +1 分芯积分

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

 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

 

回帖奖励 +1 分芯积分

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

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表