题目

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

法一:分析

这是一道考察二进制的题目

二进制或运算符(or):符号为|,表示若两个二进制位都为0,则结果为0,否则为1

二进制与运算符(and):符号为&,表示若两个二进制位都为1,则结果为1,否则为0

二进制否运算符(not):符号为~,表示对一个二进制位取反。

异或运算符(xor):符号为^,表示若两个二进制位不相同,则结果为1,否则为0

左移运算符m << n 表示把m左移n位,左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n0,比如:

00001010<<2 = 00101000

右移运算符m >> n 表示把m右移n位,右移n位的时候,最右边的n位将被丢弃,同时在最左边补上n0,比如:

00001010>>2 = 00000010

我们可以让目标数字和一个数字做与运算

这个用户比较的数字必须只有一位是1其他位是0,这样就可以知道目标数字的这一位是否为0

所以用于比较的这个数字初始值为1,比较完后让1左移1位,这样就可以依次比较所有位是否为1

代码

function NumberOf1(n)
{
let flag = 1;
let count = 0;
while(flag){
if(flag & n){
count++;
}
flag = flag << 1;
}
return count;
}

 法二:分析

最新文章

  1. [MSSQL2008]Spatial Data in SQL Server 2008 - 根据经纬度计算两点间距离
  2. HDU 2083 简易版之最短距离 --- 水题
  3. JSBinding + SharpKit / 需要注意及不支持的列表
  4. int、bigint、smallint 和 tinyint
  5. oracle编译 失效对象方式
  6. reaver使用相关
  7. 基于opencv在摄像头ubuntu根据视频获取
  8. 使用VMware Workstation Pro 12 虚拟机安装Mac OS系统教程 全程图解
  9. mybatis逆向工程之配置
  10. Python---socketserver
  11. unity案例入门(二)(坦克大战)
  12. SQL使用之关联更新、批量插入
  13. altera DDR2 IP核之仿真
  14. python 实现rsa 的加密解密存读取(PEM格式证书)【转发】
  15. DBeaver连接Oracle11g数据库
  16. 杂谈:Windows操作系统的介绍与对Win8操作系统市场反响冷淡原因的分析
  17. Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合
  18. Redis客户端连接
  19. [SublimeText] 如何创建工程
  20. Buaaclubs的NABC与发布

热门文章

  1. Hihocder 1639 : 图书馆 (组合数+唯一分解 求最后一位)(妙)
  2. spring配置数据库连接池
  3. DataWindow.NET 控件 实现点击列头排序
  4. 面试题:sql数据查询
  5. nohup、&amp;、tail 在服务启动中的用法
  6. A - Set of Strings
  7. python如何实现相对导入
  8. python序列化之pickle,json,shelve
  9. OpenCV第二课,嵌入MFC
  10. OPENGL1_环境