求N!的二进制表示中最低位1的位置
2013-01-14 23:15
302 查看
题目第一种解法:
第二种解法:
最后,书中还提到了一个附加的题目:
解法就是求n & (n - 1)。
/************************************************************************/ /* 判断N!的二进制数中最低位1的位置 解法一: 题目和上一题差不多,上一题是0的个数,这里是最低位1的位置,是类似的。 由于二进制中除以2能整除为0,所以,这个问题就是求二进制数种2个个数。*/ /************************************************************************/ int numberOfZeroInBinary(int n) { if(n < 0) return -1; if(n == 0) return 0; int ret = 0; while(n) { n >>= 1; ret += n; } return ret; }
第二种解法:
/************************************************************************/ /* 判断N!的二进制数中最低位1的位置 解二: */ /************************************************************************/ int numberOfZeroInBinary2(int n) { return n - numberOfOne(n); } //计算N的二进制中含有1的个数 int numberOfOne(int n) { int numberOfOne = 0; while(n) { n &= (n - 1); numberOfOne++; } return numberOfOne; }
最后,书中还提到了一个附加的题目:
解法就是求n & (n - 1)。
相关文章推荐
- 程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
- 求N!的二进制表示中最低位1的位置
- 正整数的 二进制表示 中 从低位向高位 第1个0/1出现位置 的计算方法
- 求N!的二进制表示最低位的1的位置(从右向左数)
- 求N!的二进制表示中最低位1的位置?
- 求N!的二进制表示中最低位1的位置 ->求 N!的质因子2的个数
- 编程之美2――N!的二进制表示中最低位1的位置
- n! 的二进制表示中最低位1的位置
- 南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
- C程序:n!的二进制表示中最低位1的位置
- 求N!的二进制表示中最低位1的位置
- 编程之美2——N!的二进制表示中最低位1的位置
- 编程之美 2.2阶乘中最低位0的个数&二进制表示中最低位1的位置
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?求N!的二进制表示中最低位1的位置。
- 求N!的二进制表示中最低位1的位置。(编程之美)
- 程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
- 编程之美---求N!的二进制表示中最低位1的位置
- 阶乘N!的二进制表示中最低位1的位置
- 程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
- 不要被阶乘吓倒(二进制表示中最低位1的位置 )