首页 > 编程语言 > 详细

C语言判断一个32位的数据,有多少位是1,然后用串口发送出来

时间:2019-07-31 21:00:35      阅读:112      评论:0      收藏:0      [点我收藏+]

     今天遇到了一个问题,遇到一个32位的数据,写一个子函数来判断它的多少位是1。我的思路一开始是把这个数据变成一个32位容量的数组然后每个位去比较是不是1,如果是1,就用另一个变量加1.最后返回这个变量。

但是这样不对当而且也没有必要转成数组来做。

    

int count_bit (unsigned int a)  
{
int counts=0;    
    while (a)  {
      counts += a & 0x1u ;
      a >>= 1 ;
    }
return counts ;
}

      这个子函数,把想要判断的32位数据传入进来。然后先对计数值赋值0。然后是一个while循环来进行循环的判断,如果数据中都是0则不会进入while循环,计数值也会返回0。进入while循环以后,会把数据的最右边一位进行一个与运算,如果是1.则会使counts加1。

然后数据a向右移动一位进行下一位数的判断。直到32位数据都判断完。就会退出这个循环。

     然后我定义了一个32位数据来验证这个函数的功能。

#include<inttypes.h >
int count_bit (unsigned int a)  
{
int counts=0;    
    while (a)  {
      counts += a & 0x1u ;
      a >>= 1 ;
    }
return counts ;
}
void setup() {
   Serial.begin(9600);  
}
uint32_t y=12341234;
int b =count_bit(y);
void loop() {
   Serial.print(b);
   delay(1000); 
}

技术分享图片

判断出这个32位数据有10个位是1。

C语言判断一个32位的数据,有多少位是1,然后用串口发送出来

原文:https://www.cnblogs.com/dzswise/p/11278818.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!