博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(剑指Offer)------二进制中1的个数
阅读量:6157 次
发布时间:2019-06-21

本文共 925 字,大约阅读时间需要 3 分钟。

题目:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

思路:

此问题最精彩之处,在于采用---位运算---处理相应的内容

function calNum(){           // var calStr = parseInt(document.getElementById("preArr").value);            var calStr =99;            var calStrs = parseInt(document.getElementById("preArr").value).toString(2);//二进制展示内容            var count = 0;            while (calStr != 0) {                if ((calStr & 1) == 1) { //与规则 : 1&1=1 当余数为1,则计数                    count++;                }                calStr = calStr >>> 1;//每次除二,整除为0 ,就不计算在内            }            return count;        }

 注解:

calStr = calStr >>> 1 某个数字右移一位,是在二进制的前提下右移的, 而二进制右移,128 64 32 16 8 4 2 1 向右移动,自动除2,向左移动,自动乘2 (calStr & 1) == 1 calStr & 1 是两个数字的二进制互与  比如 9 & 1 = 1001 & 0001 = 1 运算规则 : 1 & 1 =1 ,1&0 = 0, 0&0 =0
此页面下载后,直接放在浏览器演示,即可成功

git源码页面展示内容:https://github.com/Kristen-D/Algorithms/tree/master/algorithm/binaryOfNum

 

转载于:https://www.cnblogs.com/donglt-5211/p/10102966.html

你可能感兴趣的文章
WPF中,多key值绑定问题,一个key绑定一个界面上的对象
查看>>
UML类图简明教程
查看>>
java反编译工具(Java Decompiler)
查看>>
Android开发之自定义对话框
查看>>
微信Access Token 缓存方法
查看>>
Eclipsed的SVN插件不能识别之前工作空间的项目
查看>>
Linux 查看iptables状态-重启
查看>>
amazeui学习笔记一(开始使用2)--布局示例layouts
查看>>
c#中lock的使用(用于预约超出限额的流程)
查看>>
ODI基于源表时间戳字段获取增量数据
查看>>
并发容器之CopyOnWriteArrayList(转载)
查看>>
什么是AAC音频格式 AAC-LC 和 AAC-HE的区别是什么
查看>>
原创:goldengate从11.2升级到12.1.2
查看>>
Quartz
查看>>
正则表达式的语法规则
查看>>
C#一个关于委托和事件通俗易懂的例子
查看>>
类似于SVN的文档内容差异对比工具winmerge
查看>>
Cause: java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist
查看>>
quratz线程
查看>>
execnet: rapid multi-Python deployment
查看>>