当前位置: 首页 > news >正文

二进制中1的个数

标签:进制转换   面试真题

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

数据范围:−231<=n<=231−1−231<=n<=231−1

即范围为:−2147483648<=n<=2147483647−2147483648<=n<=2147483647

示例1

输入:10

返回值:2

说明:十进制10的32位二进制表示为0000 0000 0000 0000 0000 0000 0000 1010,有两个1。

示例2

输入:-1

返回值:32

说明:负数用补码表示 ,-1的32位二进制表示为1111 1111 1111 1111 1111 1111 1111 1111,32个1

思路:和leetcode504.七进制数-CSDN博客看似类似,但实际思路不一样,因为七进制和二进制对于负数的表示方式不同: 七进制对于负数是先把他当作正数,然后将结果加负号即可; 二进制数对于负数是要用补码表示 。因此不能使用通用的取余操作

    public int NumberOf1(int n) {int count = 0;for (int i = 0; i < 32; i++) {//&运算————先转换为二进制数,然后各个位进行与运算,这里和1(0000...00001)进行与运算即可得到最低位的数字if ((n & 1) == 1) count++;n >>= 1;  // 算术右移一位,类似于除以2,但这里必须用右移,因为右移对于负数是向负无穷取整,除法是向0方向取整,这里应该用右移}return count;}

相关文章:

  • JWT的介绍与在Fastapi框架中的应用
  • OpenCV 的 CUDA 模块中用于将一个多通道 GpuMat 图像拆分成多个单通道图像的函数split()
  • OSI 7层模型
  • cURL:通过URL传输数据的命令行工具库介绍
  • 51单片机引脚功能概述
  • QT5.14安装以及新建基础项目
  • 保持Word中插入图片的清晰度
  • Linux文件编程——read函数与lseek函数
  • 关于读写锁的一些理解
  • 使用 Comparator 和 Comparable 对集合排序:如何轻松排序 Java 集合?
  • Edge Remover v18.7 绿色版:轻松卸载 Edge 浏览器,彻底清理残留数据
  • Electron学习大纲
  • linux-进程信号的产生
  • 可编辑PPT | 企业数字底座:数据中台构建路径、方法和实践数据中台架构解决方案
  • 解锁遥感数据密码:DeepSeek、Python 与 OpenCV 的协同之力
  • Python教程(四)参数提取pymysql
  • LeetCode算法题:电话号码的字母组合
  • T2000云腾边缘计算盒子在数猪场景中的应用|YOLOv8+NodeRED
  • 软考 系统架构设计师系列知识点之杂项集萃(57)
  • VS2019 - 修正导出项目的工程模板的错误
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?
  • 中美发布日内瓦经贸会谈联合声明达成关税共识,外交部回应
  • 全国层面首次!《防震减灾基本知识与技能大纲》发布
  • 减重人生|走过节食弯路,她如何半年减60斤找回自信?
  • 让胖东来“自闭”的玉石生意,究竟水有多深?