计算二进制数有多少个‘1’
来源:互联网 发布:91白苹果修复软件 编辑:程序博客网 时间:2024/04/27 20:08
简述:
写个小函数统计一个int数字的二进制数中有多少个1, 通过时间记录100000次运算开销,观察两种算法耗时
知识点:
1. 移位操作
2. windows库的时间统计
代码:
#include<iostream>#include<windows.h>using namespace std;//& 0x01 by bit and then do 1 bit shiftint NumCount1(int a){int num = 0;while(a){num += a & 0x01;a >>= 1;}return num;}//minus 1 then &int NumCount2(int a){int num = 0;while(a){a &= (a - 1);num++;}return num;}int main(){ LARGE_INTEGER large_interger; double dff; __int64 start, end; /*************************NumCount1******************************/ QueryPerformanceFrequency(&large_interger); dff = large_interger.QuadPart; cout << 100000 << ", number of '1' is " << NumCount1(100000) << ", "; QueryPerformanceCounter(&large_interger); start = large_interger.QuadPart;for(int i = 0;i < 100000;i++)NumCount1(10000000);/************************************************************/ QueryPerformanceCounter(&large_interger); end = large_interger.QuadPart; cout << "Count1: " << (end - start) * 1000 / dff << "微秒" << "\n\n"; /*************************NumCount2*****************************/ cout << 100000 << ", number of '1' is " << NumCount2(100000) << ", "; QueryPerformanceCounter(&large_interger); start = large_interger.QuadPart;for(int i = 0;i < 100000;i++)NumCount2(10000000); QueryPerformanceCounter(&large_interger); end = large_interger.QuadPart; cout << "Count2: " << (end - start) * 1000 / dff << "微秒" << "\n\n"; /************************************************************/return 0;}
输出:
- 计算二进制数有多少个‘1’
- 计算一个数的二进制形式有多少个1
- 计算一个数的二进制表示中有多少个1
- 计算整型数的二进制中包含多少个1
- 计算一个整数的二进制中有多少个1
- 计算数字二进制中有多少个1
- 判断一个整数的二进制数有多少个1
- 如何判断一个数的二进制有多少个1
- 判断一个数的二进制有多少个1
- 算法笔记:二进制数有多少个1
- 如何判断一个数的二进制有多少个1
- _builtin_popcount()计算二进制中多少个1
- _builtin_popcount()计算二进制中多少个1
- c语言位运算 求1个整数的二进制数有多少个1
- 二进制序列有多少个1
- 题目:二进制中有多少个1
- 二进制中有多少个1
- 容易 二进制中有多少个1
- 一些 MS press 的 free ebook
- ora-39142,ora-39001,ora-39000
- HDU 4293 Groups(区间DP)
- T局 L局 H局
- Unity Animation Scripting
- 计算二进制数有多少个‘1’
- paip.Answer 3.0 注册功能SQL注入漏洞解决方案
- ANT简明教程
- KMP算法详解
- (二)使用libcurl实现获取目标文件大小, 下载进度显示, 断点续传等功能
- 科学话SEO:网站日志分析研究和分析网站存在的SEO问题
- MPM
- java多线程编程
- org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0