首页 > 其他分享 >二进制有关操作模板

二进制有关操作模板

时间:2023-09-30 12:44:37浏览次数:28  
标签:return 二进制 lowbit ret template 操作 模板 库函数

  1. lowbit

lowbit(x)是 $x$ 的二进制表达式中最低位的1所对应的值

template<typename T>
T lowbit(T x){
   return x&-x;
}
  1. 求二进制中1的个数:
  • 【方法一】 库函数:__builtin_popcountll(n)
    • 附库函数的具体实现:
unsigned popcount (unsigned u){
	u = (u & 0x55555555) + ((u >> 1) & 0x55555555);
	u = (u & 0x33333333) + ((u >> 2) & 0x33333333);
	u = (u & 0x0F0F0F0F) + ((u >> 4) & 0x0F0F0F0F);
	u = (u & 0x00FF00FF) + ((u >> 8) & 0x00FF00FF);
	u = (u & 0x0000FFFF) + ((u >> 16) & 0x0000FFFF);
	return u;
}
  • 【方法二】 编程实现:
    • 【方法二·①】
template<typename T>
T popcnt(T x){
	T ret=0;
	for(;x;x&=x-1)ret++;
	return ret;
}
  • 【方法二·②】
template<typename T>
T popcnt(T x){
	T ret=0;
	for(;x;x>>=1)if(x&1)ret++;
	return ret;
}

标签:return,二进制,lowbit,ret,template,操作,模板,库函数
From: https://www.cnblogs.com/WangBF/p/17737738.html

相关文章

  • Linux下C语言操作网卡的几个代码实例?特别实用
    前面写了一篇关于网络相关的文章:如何获取当前可用网口。《简简单单教你如何用C语言列举当前所有网口!》那么如何使用C语言直接操作网口?比如读写IP地址、读写MAC地址等。一、原理主要通过系统用socket()、ioctl()、实现intsocket(intdomain,inttype,intprotocol);功能:......
  • git 常用命令操作
    Git是一个分布式版本控制系统,常用于代码管理和版本控制。以下是一些常用的Git命令:初始化Git仓库:gitinit这个命令会初始化一个Git仓库,在当前目录下创建一个新的.git目录。添加文件到暂存区:gitadd.这个命令将当前目录下的所有文件添加到暂存区,准备进行版本......
  • Go每日一库之173:Pie (高性能、类型安全的slice操作库)
    在Go语言中,对slice和map是我们最常用的数据结构。比如,计算两个切片的交集、差集;判断切片中的元素是否都满足某个条件的等。我推荐大家使用这个包:[elliotchance/pie](https://github.com/elliotchance/pie)。该包封装了对切片和map的常用操作,能满足工作中的大部分需求。比如计算......
  • Go每日一库之128:podinfo(k8s微服务模板)
    项目介绍官方Github:PodinfoPodinfo是一个用Go制作的小型web应用程序,它展示了在Kubernetes中运行微服务的最佳实践。它已实现的技术指标(截选自官方README.md):里面每一项技术指标的实现方式,其实都可以拿出来单独讲好久,相关理论也有好多。这里我只是讲针对这个项......
  • ​​pandas.get_dummies()​​ 是一个用于执行独热编码(One-Hot Encoding)的 pandas 函
    pandas.get_dummies()是一个用于执行独热编码(One-HotEncoding)的pandas函数。它用于将分类(或离散)特征转换为模型可以处理的二进制格式,以便更好地在机器学习算法中使用。独热编码将每个不同的类别值转换为一个新的二进制特征列,其中每个列代表一个类别,并且只有一个值为1,其余为0......
  • 使用链表操作实体类
    编写实体类publicclassStudent{Stringname;//姓名Stringsex;//性别intsno;//学号intscore;//成绩publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;......
  • 使用数组操作实体类
    编写实体类publicclassStudent{Stringname;//姓名Stringsex;//性别intsno;//学号intscore;//成绩publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;......
  • git日常操作汇总
    1、如果本地已经有代码,现在想用git管理,操作步骤如下:1、进入项目根目录下,执行gitinit2、添加所有文件gitadd.3、提交gitcommit-m'init'4、关联到远程仓库,git上先创建一个项目,然后再关联gitremoteaddoriginhttps://gitee.com/xxx/hr.git5、gitpush-uorigin......
  • TCP/IP连接数的最大值取决于操作系统、硬件和应用程序等多个因素
    TCP/IP连接数的最大值取决于操作系统、硬件和应用程序等多个因素。下面是一些常见操作系统中TCP/IP连接数的默认值和最大值:Windows10/WindowsServer2019:默认值为16384,最大值为16777216Windows8/WindowsServer2012:默认值为16384,最大值为16777216Windows7/WindowsServer......
  • 【模板】线性筛素数
    【模板】线性筛素数点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineLLlonglongconstintN=1e8+10;intp[N],cnt,vis[N];intmain(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); intn,q; cin>>n>>q; for(inti=2;i......