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

本文共 1704 字,大约阅读时间需要 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

转载地址:http://xiaux.baihongyu.com/

你可能感兴趣的文章
JavaSelenium(1)-selenium简介
查看>>
Genymotion模拟器一滑动页面就跳到搜索003
查看>>
一个td里面怎么让两个div重叠
查看>>
Emacs常用命令
查看>>
在使用angular1.x的时候双向绑定的技巧
查看>>
紧接上篇,jQuery调用jsonp,并且在页面上展示
查看>>
HDU-2553
查看>>
求整数数组(长度为n),出现大于2/n次数的数字
查看>>
c++的vector容器
查看>>
jsp中启动java服务报错
查看>>
第五周编程总结
查看>>
B. Little Dima and Equation
查看>>
iOS开发数据库篇—SQL
查看>>
转:HTTP/2 新特性浅析
查看>>
centos关闭邮件提醒
查看>>
React Native资料收集
查看>>
jquery javascript获得网页的高度和宽度
查看>>
barrier()函数
查看>>
(十八)js控制台方法
查看>>
VB关键字总结
查看>>