JavaScript趣题:统计二进制
来源:互联网 发布:美工助手阿里巴巴版 编辑:程序博客网 时间:2024/06/05 02:17
咋们搞前端的,想必很少有机会接触二进制吧,那些位运算啥的,不是底层应该考虑的问题嘛?
昨天看到一个题目,它和二进制相关,但用不用位运算都没关系,借助JS的语言特性,也能轻易地解决。
描述如下:
写一个函数,接收一个十进制的正整数作参数,用二进制表示它,并返回那些数位等于1的数目。
来个例子:
1234表示为二进制是10011010010,这里面有5个1,所以返回5。
看了这个描述,我的脑海中首先想到的是,以前老师上课教的,怎么从十进制转二进制(书到用时方恨少^_^)。
好在我记性不错,很快想到了,对这个正整数先对2取余,再除以2,结果再对2取余,再除以2......直到结果为0。
那么,在上面的过程里面用一个变量记录余数为1的次数,最后返回即可。
于是便有了下面的做法:
var countBits = function(n) { var count = 0; while(n > 0){ var res = n % 2; if(res == 1){ count++; } n = parseInt(n / 2); } return count;};这代码和思路都算中规中矩,但没有充分利用JS的语言特性。
在JS里面,十进制转二进制不是有现成的API麽?
number.toString(2),这样不就得到了二进制的字符串了么?
结果都出来了,那就一个个地查找为1的数目,再返回。
嗯嗯,上面的两种方法都不错,但殊途同归,最高效的方法还是位运算。
最后,来看一个国外大牛写的位运算解法吧!
function countBits(n) { for(c=0;n;n>>=1)c+=n&1 return c;}啧啧,亮瞎双眼的节奏。
0 0
- JavaScript趣题:统计二进制
- JavaScript趣题:统计降水量
- 统计二进制1个数
- 864 统计【二进制】
- JavaScript-二进制与二进制数组
- javascript操纵二进制流
- javascript 处理二进制流
- 统计二进制数中“1”的个数(懂二进制)
- 统计二进制中1的个数
- 统计unsigned int 二进制1的个数!
- 统计二进制中1的个数
- 统计二进制串中的1的个数 .
- 统计二进制数1的个数
- HDU4321(位运算二进制1的统计)
- 二进制中1的个数统计
- 统计二进制数中1的个数
- HDU 4588 统计二进制加法进位次数
- 统计二进制数中的1的个数
- 事件类型——事件第三层
- 实用知识:修改文字间距、行距
- ERACH 2ms 8960注册失败的问题分析
- JavaScript基础(第一部分)
- WEB前端-JS-动态购物页面V1
- JavaScript趣题:统计二进制
- px4位置估计-inav 算法解读
- POJ 3368
- Xss攻击事件详解
- c语言获取数组长度
- SpringMVC源码剖析(六)- HandlerInterceptor的来龙去脉
- 盲人摸象
- HTML5-交易頁面
- POJ 1511 Invitation Cards