博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题10:二进制中1的个数
阅读量:3701 次
发布时间:2019-05-21

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

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

这里写图片描述


解题思路:

逐位判断是否是1。

public class Solution {    //java中int负数的二进制就是用补码来表示的    public int NumberOf1(int n) {        if (n == 0) {            return 0;        }        int num = 0;        int flag = 1;        while (flag != 0) {            if((n & flag) != 0) {                num++;            }            flag = flag << 1;        }        return num;    }}

方法二:

public static int numberOfOne2(int n) {          // 记录数字中1的位数          int result = 0;          // 数字的二进制表示中有多少个1就进行多少次操作          while (n != 0) {              result++;              // 从最右边的1开始,每一次操作都使n的最右的一个1变成了0,              // 即使是符号位也会进行操作。              n = (n - 1) & n;          }          // 返回求得的结果          return result;      }
你可能感兴趣的文章
SQL语句大全
查看>>
SpringBoot安全管理 ——模块3:OAuth 2的简单应用
查看>>
SpringBoot消息服务 —— SpringBoot整合ActiveMQ
查看>>
Java 虚拟机 (JVM)系列一
查看>>
mybatis 中插入数据,如何获取到新增数据的主键 id
查看>>
SpringBoot + Vue 如何实现导出Excel操作,这篇文章帮你解决!
查看>>
IDEA访问不了官网解决办法
查看>>
Docker 基础篇之快速上手【一】
查看>>
Docker 基础篇之快速上手【二】
查看>>
【大厂面试】面试官都爱问的 Redis 事务
查看>>
IDEA编译时出现 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
查看>>
Redis 的 Java 客户端
查看>>
Redis 做分布式锁
查看>>
Redis 做消息队列
查看>>
Linux 的网络配置
查看>>
Linux 环境下安装 MySQL,各种踩坑、疑难杂症
查看>>
MySQL性能【索引优化分析】
查看>>
MySQL性能【查询截取分析】
查看>>
MySQL 锁机制
查看>>
3. Shiro 授权
查看>>