一、__builtin_popcount()的作用

__builtin_popcount()是 GCC 编译器的内置函数。它可以返回输入数据中,无符号二进制中‘1’的个数。

二、使用场景:

使用一个二进制数字表示一个集合的时候,枚举一个组合(子集),需要判断这个数字里面的 1 的个数是不是和子集的大小相等。

三、应用

LeetCode 762. 二进制表示中质数个计算置位
给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。计算置位位数 就是二进制表示中 1 的个数。
例如, 21 的二进制表示 10101 有 3 个计算置位。
示例 1:
输入:left = 6, right = 10
输出:4
解释:
6 -> 110 (2 个计算置位,2 是质数)
7 -> 111 (3 个计算置位,3 是质数)
9 -> 1001 (2 个计算置位,2 是质数)
10-> 1010 (2 个计算置位,2 是质数)
共计 4 个计算置位为质数的数字。
AC1:

class Solution {public:int countPrimeSetBits(int left, int right) {int ans = 0;for (int x = left; x <= right; ++x) {if ((1 << __builtin_popcount(x)) & 665772) {++ans;}}return ans;}
};

AC2:

class Solution {public:int countPrimeSetBits(int L, int R) {int res=0;for(int i=L;i<=R;i++)res+=(665772>>__builtin_popcount(i))&1 ;return res;}
};

说明:665772 的二进制表示如下

位数 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
665772 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0

什么是C++ __builtin_popcount()函数相关推荐

  1. C/C++: __builtin_popcount 函数及其一些 __builtin函数

    __builtin_popcount函数 __builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1 GCC有一个叫做__builtin_popcount的内建函数,它可以 ...

  2. CodeForces - 993C Careful Maneuvering(几何+暴力+状态压缩)

    题目链接:点击查看 题目大意:在 x = -100 的直线上有 n 个敌方飞船,在 x = 100 的直线上有 m 个敌方飞船,现在在 x = 0 的直线上可以选择两个点作为诱饵,使得两侧的飞船瞄准射 ...

  3. 解9*9数独算法(C++)

    什么是数独 数独(shù dú)是源自18世纪瑞士的一种数学游戏.是一种运用纸.笔进行演算的逻辑游戏.已知有9行9列的格子,且被分成9个3*3的方块.其中一些格子内有数字,数值的范围为1-9 .玩家需 ...

  4. 一些问题的答案记录 (持续更新中)

    前言: 博士期间会不断的学习和查阅在线资料, 甚至有时候能发现一些特别出彩的小问题及其答案. 与其花时间记住全部的答案, 不如将他们记录下来,以便后期查阅, 故写此文. 问题集: 如何清空CPU Ca ...

  5. 奇妙糖果屋 【二进制+异或】

    奇妙糖果屋 Time Limit : 3000/1000ms (Java/Other)   MemoryLimit : 65535/32768K (Java/Other) Total Submissi ...

  6. C语言popcount函数,C/C++中__builtin_popcount()的使用及原理

    __builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1 Counting out the bits 可以很容易的判断一个数是不是2的幂次:清除最低的1位(见上面)并且检 ...

  7. C/C++中__builtin_popcount()的使用及原理

    __builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1 Counting out the bits     可以很容易的判断一个数是不是2的幂次:清除最低的1位(见上面 ...

  8. 欧拉函数的一道练习题(附加容斥做法)

    jzd同学今天告诉了我们一道关于欧拉函数的题,一开始觉得毫无头绪,当身旁的erge同学切完开始装(xiao)逼(zhang)的时候,他无意间透露的欧拉函数四个字启发了我,最近做了一道很相似的题HDU1 ...

  9. c语言中的循环移位函数,C ++中循环移位(旋转)操作的最佳实践

    另请参阅另一个旋转问题的此答案的早期版本,其中包含有关asm gcc / clang为x86生成的更多详细信息. 在C和C ++中表达旋转的最容易编译的方法是避免任何未定义的行为,这似乎是John R ...

最新文章

  1. python的0基础入门语法_学习小结(1)
  2. docker学习笔记18:Dockerfile 指令 VOLUME 介绍
  3. JS实现下一天的显示
  4. Linux下安装DB2_v9.7详细教程
  5. 十大排序算法——选择排序法
  6. windows 不安装jdk 运行 jar_详解Windows系统安装运行Mongodb服务(推荐)
  7. GitHub 爬虫项目
  8. android opengl滤镜,Android OpenGL ES滤镜开发之美颜效果
  9. 《大数据之路-阿里巴巴大数据实践》第十六章 数据应用
  10. 机器学习模型训练全流程!
  11. 解读 AppStore 新功能:自定义产品页面和 A/B Test 工具
  12. 【Word文稿】在Word中优雅地插入VScode颜色主题代码(高亮、背景、颜色、字体均完美)
  13. 火车票能不能选座_电话订火车票可以自己选座位吗
  14. 「Go工具箱」web中想做到cookie值安全?securecookie库的使用和实现原理
  15. Windows11 系统打开IE浏览器的方式(完整版)
  16. linux计划任务1
  17. 框架技术----Spring介绍
  18. 2021年2月22日 星期一 农历八九 晴
  19. MySQL的事务总结(事务特性,隔离级别,脏读,不可重复读,幻读,常见问题)
  20. Android权限申请哪些需要动态申请

热门文章

  1. Ureport2导出内容加入PDF文件
  2. 微信读书电脑版更改字体
  3. 电脑怎样删除警告“操作无法完成“的文件夹
  4. 双塔模型DSSM及各种变体塔
  5. C++习题--求余数
  6. 服务器无备份位置可用,云服务器备份区域和可用区
  7. 冲刺阶段 - PMP易错概念(持续更新中)
  8. 以分割栅格为例实现FME模板的方案优化
  9. 兰州大学本科生(学士学位)LaTeX模板-2021版
  10. 7-1 判断两个数是否互质