OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2530|回复: 4

如何查询一个变量的位发生变化?

[复制链接]

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2020-4-9 09:08:17 | 显示全部楼层 |阅读模式
  在项目中,总会定义某个全局变量,该变量的每个bit位代表某种功能状态,1-开启,0-关闭。但是有时候该变量发生一次变化时,如何定位到该变量的某个bit位发生变化,这样就可以查询到是哪种状态发生变化。此时我举了一个简单的算法,如下:




unsigned short Compare_Byte(unsigned short x,unsigned short y)
{
   unsigned char i = 0;
   unsigned short a = 0,b = 0,c = 1;
   for (; i < 16; i++)
   {
      a = x % 2;
      x = x / 2;
      b = y % 2;
      y = y / 2;
      if (a != b)   //通过循环比较每一位是否相等
     {
        break;
     }
   }
   return c<<i;
}



  不知道各位有没有更好的算法,分享一下。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

211

帖子

0

精华

高级会员

Rank: 4

积分
833
金钱
833
注册时间
2019-12-17
在线时间
157 小时
发表于 2020-4-9 09:49:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
 楼主| 发表于 2020-4-9 10:40:19 | 显示全部楼层

能提供算法吗?
回复 支持 反对

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
 楼主| 发表于 2020-4-9 10:51:39 | 显示全部楼层
jiangyy 发表于 2020-4-9 10:40
能提供算法吗?

明白了,谢谢,看来我多此一举
回复 支持 反对

使用道具 举报

6

主题

211

帖子

0

精华

高级会员

Rank: 4

积分
833
金钱
833
注册时间
2019-12-17
在线时间
157 小时
发表于 2020-4-9 18:36:43 | 显示全部楼层
jiangyy 发表于 2020-4-9 10:51
明白了,谢谢,看来我多此一举

大家都是探索着前进,一时的弯路避免不了,加油,
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-2 17:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表