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

wp做购物网站郑州网站制作公司

wp做购物网站,郑州网站制作公司,淄博云天网站建设推广,济南网站建设(选聚搜网络)二进制中1的个数 输入一个 32位整数,输出该数二进制表示中 1 的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 数据范围 −100≤ 输入整数 ≤100 样例1 输入:9 输出:2 解释:9的二进制表示是1001&#xf…

二进制中1的个数


输入一个 32位整数,输出该数二进制表示中 1 的个数。

注意

  • 负数在计算机中用其绝对值的补码来表示。
数据范围

−100≤ 输入整数 ≤100

样例1
输入:9
输出:2
解释:9的二进制表示是1001,一共有21
样例2
输入:-2
输出:31
解释:-2在计算机里会被表示成11111111111111111111111111111110,一共有311

算法描述

通过迭代计算整数 n 的二进制表示中 1 的个数,步骤如下:

  1. 转换为无符号整数:避免负数右移时的符号扩展问题
  2. 循环直到 n = 0
    • 检查最低位是否为 1n & 1 == 1 则计数器 +1
    • 右移一位:n = n >> 1(无符号右移自动补0)
  3. 返回计数器值
时间复杂度

O ( log ⁡ n ) O(\log n) O(logn)
每次迭代将 n n n 减半(右移一位),最多执行 log ⁡ 2 n \log_2 n log2n

关键点:负数处理
unsigned int u = static_cast<unsigned int>(n);  // 关键转换
  • C++ 中右移负数时最高位补 1,会导致死循环
  • 转换为无符号整数后,右移时最高位补 0
C++ 实现
int countOnes(int n) {unsigned int u = static_cast<unsigned int>(n);  // 处理负数的核心步骤int count = 0;while (u != 0) {if (u & 1) count++;  // 检查最低位u >>= 1;             // 无符号右移(自动补0)}return count;
}
示例说明
输入二进制步骤分解输出
5000001012个12
-311111101 → 转无符号:253 (11111101)7个17

注意:负数的二进制补码表示在转换为无符号整数时,其原始位模式保持不变,但右移行为变为逻辑移位(补0)而非算术移位(补符号位)。

http://www.dtcms.com/wzjs/790751.html

相关文章:

  • 怎么查一个网站的备案信息淘宝店铺去哪里买
  • 深圳网站开发兼职网站建设考核表
  • 如何给网站做引流玉环哪里有做网站
  • 网站栅格布局ui设计培训学校哪里好
  • 企业模板网站网络营销第二板斧是什么
  • 移动网站建设学习wordpress添加管理员
  • 自学商城网站建设家政网站模版
  • 建设银行网站 查余额阳江网红酒店
  • 怎么购买域名自己做网站网站源码出售
  • 网站域名备案要多少钱wpf可以做网站吗
  • 网站网页制作机构腾讯云服务器怎么登录
  • 湘潭交通网站开发公司资质需要什么证书
  • 织梦网站如何修改数据库配置软件技术和软件工程有什么区别
  • 做装修网站好赚钱吗网站没有内容可以备案吗
  • 哪家企业做网站好织梦网站图片修改不了
  • 天津重型网站建设风格微网站是什么
  • 怎么建立公司的网站吗软件开发项目管理文档
  • wordpress清理软件某企业网站搜索引擎优化
  • 抚州市临川区建设局网站wordpress4.9.8有中文版
  • 游戏网站服务器租用石家庄关键词排名工具
  • 长沙专业个人做网站哪家好免费1级做爰片观看网站在线视频
  • 微设计公司网站金昌做网站
  • 动漫网站模板嘉兴市网站建设
  • 深圳商业网站建设去哪家做饲料的专业网站
  • 精品资源共享课网站建设固安做网站的公司
  • 泉州手机网站建设费用企业服务内容怎么写
  • 旅游网站建设现状wordpress修改首页面标题
  • 简述企业网站如何推广中小企业建站
  • 网站建设的目入图片网站升级公告模板
  • 电子商务网站建设预算表做帖子网站