博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【编程之美】求二进制数中1的个数
阅读量:7296 次
发布时间:2019-06-30

本文共 1774 字,大约阅读时间需要 5 分钟。

1 题目

对一字节的无符号变量,求其二进制表示中1的个数

2 代码

#include 
#include
using namespace std;typedef unsigned char byte;//一般解法byte solution1(byte n){ int cnt = 0; while(n){ if(n%2) cnt++; n /= 2; } return cnt;}/* * 1.最后一位是1,则n&(n-1)最后一个1变为0。 * 2.最后一位是0,则n&(n-1)将最后一个1变为0。 * 总之每运算一次n&(n-1)就把最后一个1变为0. */byte solution2(byte n){ int cnt = 0; while(n){ n &= (n-1); cnt ++; } return cnt;}//以空间换时间byte solution3(int n){ byte countTable[256] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 }; return countTable[n];}int main(int argc, char *argv[]){ byte n = 123; printf("%d\n", solution1(n)); printf("%d\n", solution2(n)); printf("%d\n", solution3(n)); return 0;}

Author: visaya fan 

Date: 2011-08-24 00:38:47

HTML generated by org-mode 6.33x in emacs 23

转载于:https://www.cnblogs.com/visayafan/archive/2011/09/27/2193626.html

你可能感兴趣的文章
17.3. mpstat
查看>>
dataguard中MRP无法启动的问题分析和解决
查看>>
Oracle 12C R2-新特性-转换函数的增强
查看>>
ITIL的一些简单感受
查看>>
使用oracheck进行系统巡检
查看>>
云计算+物联网的前景更加诱人
查看>>
SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...
查看>>
购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session
查看>>
HDOJ/HDU 2566 统计硬币(公式~遍历~)
查看>>
Java RMI(远程方法调用) 实例与分析 (转)
查看>>
架构漫谈(二):认识概念是理解架构的基础
查看>>
[20161219]关于LANGUAGE_MISMATCH.txt
查看>>
天使投资乱象频出 熟人元素何时剔除
查看>>
使用SQLCMD在SQLServer执行多个脚本
查看>>
如何使用通用Mapper
查看>>
快速安装及部署DRBD
查看>>
Java调试那点事
查看>>
COM-TEAM
查看>>
解决Sublime包管理package control 报错 There are no packages available for installation
查看>>
九个月搞定三轮融资,做 AI 导购的「智能一点」如何在巨头中突围?
查看>>