编程之美--2.4 1的数目之扩展问题
2017-03-04 21:19
330 查看
思路与书中2.4的类似,只是把十进制换成了二进制,只需在iFactor*10的地方,改成iFactor*2即可。
代码如下:
#include <iostream>
#include<bitset>
using namespace std;
const unsigned SYSTEM = 2;
unsigned long Sum1s(unsigned long n)
{
unsigned long iCount = 0;
unsigned long iFactor = 1;
unsigned long iLowerNum = 0;
unsigned long iCurrNum = 0;
unsigned long iHigherNum = 0;
while (n / iFactor != 0)
{
iLowerNum = n - (n / iFactor) * iFactor;
iCurrNum = (n / iFactor) % SYSTEM;
iHigherNum = n / (iFactor * SYSTEM);
switch (iCurrNum)
{
case 0:
iCount += iHigherNum * iFactor;
break;
case 1:
iCount += iHigherNum * iFactor + iLowerNum + 1;
break;
default:
iCount += (iHigherNum + 1) * iFactor;
break;
}
iFactor *= SYSTEM;
}
return iCount;
}
int main()
{
unsigned long n = 0x4;
cout << "binary number: " << bitset<8>(n) << endl;
cout << "number of 1: " << Sum1s(n) << endl;
system("pause");
return 0;
}
代码如下:
#include <iostream>
#include<bitset>
using namespace std;
const unsigned SYSTEM = 2;
unsigned long Sum1s(unsigned long n)
{
unsigned long iCount = 0;
unsigned long iFactor = 1;
unsigned long iLowerNum = 0;
unsigned long iCurrNum = 0;
unsigned long iHigherNum = 0;
while (n / iFactor != 0)
{
iLowerNum = n - (n / iFactor) * iFactor;
iCurrNum = (n / iFactor) % SYSTEM;
iHigherNum = n / (iFactor * SYSTEM);
switch (iCurrNum)
{
case 0:
iCount += iHigherNum * iFactor;
break;
case 1:
iCount += iHigherNum * iFactor + iLowerNum + 1;
break;
default:
iCount += (iHigherNum + 1) * iFactor;
break;
}
iFactor *= SYSTEM;
}
return iCount;
}
int main()
{
unsigned long n = 0x4;
cout << "binary number: " << bitset<8>(n) << endl;
cout << "number of 1: " << Sum1s(n) << endl;
system("pause");
return 0;
}
相关文章推荐
- 编程之美 2.4 “1”的数目及扩展问题
- 编程之美--高效率算出1的数目之扩展问题
- 读书笔记之编程之美 - 2.4 1的数目
- 编程之美 2.4 “1”的数目
- 编程之美2.4扩展问题
- 编程之美-2.4 1的数目
- 1的数目_扩展问题
- 最近碰到个问题,关于php扩展编程如何返回数组的问题
- 编程之美 2.3 寻找发帖水王扩展问题
- [zz]编程之美-重建二叉树扩展问题1 2
- 编程之美---->蚂蚁爬杆之扩展问题,第i个蚂蚁什么时候走出木杆
- 编程之美-快速寻找满足条件的2个数(扩展问题)的一个解法的注释
- 编程之美3.11扩展问题
- 编程之美-2.4-1的数目
- 编程之美-程序改错及扩展问题
- 编程之美---小飞的电梯调度问题 1.8 扩展2
- 编程之美--发帖水王及扩展问题
- 编程之美-重建二叉树扩展问题1 2
- 编程之美 寻找发帖水王 扩展问题
- 编程之美---快速寻找满足条件的两个数---扩展问题