[PIC®/AVR®/dsPIC®产品] 求一个数字中对应二进制中为1的个数

[复制链接]
464|1
 楼主| gaoyang9992006 发表于 2021-12-21 19:17 | 显示全部楼层 |阅读模式
https://mp.weixin.qq.com/s/Ednvz9F9cTXvW9mzA8Lj-g
这是论坛微信公众号上的**。
其实我看到这个题目想到的是用数据结构来求。
方法:结构体与联合体。
为了简单起见,我将文中求32位数字,换成了8位数字。其实多添加一下结构体就行了。
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. struct bb
  4. {
  5.     unsigned b0:1;
  6.     unsigned b1:1;
  7.     unsigned b2:1;
  8.     unsigned b3:1;
  9.     unsigned b4:1;
  10.     unsigned b5:1;
  11.     unsigned b6:1;
  12.     unsigned b7:1;
  13. };

  14. union aa
  15. {
  16.     struct bb bx;
  17.     unsigned char x;
  18. };

  19. int val;

  20. int main()
  21. {
  22. union aa y;
  23. y.x=0xDF;

  24. val=y.bx.b0+y.bx.b1+y.bx.b2+y.bx.b3+y.bx.b4+y.bx.b5+y.bx.b6+y.bx.b7;
  25. printf("b=%d\n",val);
  26. return 0;
  27. }
哈哈,这是我用的方法。大家觉得我这方法靠谱不
 楼主| gaoyang9992006 发表于 2021-12-21 19:18 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2053

主题

16414

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部