输入1个数输出其二进制表示中1的个数
来源:互联网 发布:淘宝客鹊桥pid 编辑:程序博客网 时间:2024/05/29 16:34
面试题。题目描述就是写一个函数,要求输入一个数,输出其二进制表示中1的个数。此处假设输入的为int型。
方法一:首先想到的就是位运算,用移位得出每一位是否为1。代码如下所示。
#include <iostream>using namespace std;int numberof1(int in){int count = 0;int input = in;for(int i = 0; i < 32; i++){if(1 == (input & 1))count++;input >>= 1;}return count;}int main(){int numbertocount;cin>>numbertocount;cout<<numberof1(numbertocount)<<endl;return 0;}
方法二:其次想到的是直接像数组一样取每一位的值,如此只要把所有的位相加起来,得出的值即为所求,其它代码不变,numberof1函数代码如下所示。
int numberof1(int in){int count = 0;char input[32];itoa(in, input, 2);for(int i = 0; i < strlen(input); i++){count += input[i] - '0';}return count;}
方法三:不直接取每一位的值,采用除以2取余数,余数相加即为所求,其它代码不变,numberof1函数代码如下所示。
int numberof1(int in){int count = 0;int input = in;for(int i = 0; i < 32; i++){count += input % 2;input /= 2;}return count;}
方法四:采用位运算变相得出1的个数,其它代码不变,numberof1函数代码如下所示。
int numberof1(int in){int count = 0;int input = in;while(input){count++;input &= input - 1;}return count;}
方法五:不使用循环,采用空间换取时间的策略,如32位机中int为32位,定义2的32次方大小的int型数组,其中每个元素存对应序号的二进制表示中1的个数。如此求输入值的二进制表示中1的个数就可以转化成查表的方式来进行,查表的优化可以采用索引。
- 输入1个数输出其二进制表示中1的个数
- 输入1个数输出其二进制表示中1的个数
- 整型数其二进制表示中”1“的个数
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 输出该数二进制表示中1的个数
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- Java实现输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 10.输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- java实现输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 如何在VS中创建FXC编译工具
- JavaScript DOM编程中关于性能的考虑
- VS2010+Opencv-2.4.0的配置攻略
- C#用 SendKyes 结合 Process 或 API FindWindow、SendMessage(PostMessage) 等控制外部程序[转]
- IOS开发教程:为iOS5设计消息通知
- 输入1个数输出其二进制表示中1的个数
- struts2 上传文件 HTTP Status 404 - No result defined for action.....and result input
- android:layout_gravity 和 android:gravity 的区别
- 如何解决eclipse生成的apk无法在真机上调试安装的问题
- Java常用的设计模式
- 在 freeBSD 中使用 metasploit
- android ellipsize 解决textview自动换行
- 【转载】VB.NET 改变MDI窗口的颜色,给DataGridview 行 增加颜色
- Solr更新、删除索引