计算32位二进制整数中1的个数(包括负数补码)

news2024/11/15 21:41:07

引言:

在计算机科学和编程中,位操作是一项重要的技能。一个常见的任务是计算一个32位二进制整数中1的个数,包括负数的补码表示。这个问题有多种解决方法,本博客将介绍一种高效的解决方案,同时提供详细的代码案例。

背景知识:

在正整数的二进制表示中,1的个数表示了这个数的二进制形式中有多少个位是置为1的。而在负数的补码表示中,需要考虑到符号位。负数的补码表示是将其绝对值的二进制表示取反再加1。

解决方案:

我们可以使用位操作来计算32位二进制整数中1的个数,无论是正数还是负数的补码表示。下面是一种高效的算法:

def count_ones(n):
    count = 0
    while n:
        count += 1
        n = n & (n - 1)
    return count

这个算法的关键在于利用了位操作的性质。在每次循环中,我们将整数n与(n-1)做按位与操作,这将把n的二进制表示中最右边的1变为0。重复这个过程,直到n变为0,每次循环计数加1。

代码案例:

下面是一个完整的Python代码示例,演示了如何使用上述算法计算一个32位二进制整数中1的个数,包括负数的补码表示:

def count_ones(n):
    count = 0
    while n:
        count += 1
        n = n & (n - 1)
    return count
# 测试正数
num1 = 23
print(f"二进制表示:{bin(num1)}")
print(f"1的个数:{count_ones(num1)}")
# 测试负数
num2 = -23
print(f"二进制表示:{bin(num2 & 0xFFFFFFFF)}")  # 将负数转换为补码表示
print(f"1的个数:{count_ones(num2 & 0xFFFFFFFF)}")  # 计算1的个数

在这个示例中,我们首先测试了一个正数23和一个负数-23。注意,对于负数,我们使用了位操作将其转换为补码表示,并且计算1的个数仍然有效。

总结:

计算一个32位二进制整数中1的个数是一个常见的编程问题,对于正数和负数的补码表示都有有效的解决方案。本博客介绍了一种高效的位操作算法,并提供了详细的代码案例,希望对你在面试或实际编程中有所帮助。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1078775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“优化STM32单片机处理大量网络数据的方法“

"优化STM32单片机处理大量网络数据的方法" 在处理大量网络数据时,对STM32单片机的裸机程序,可采用以下处理方法:1.使用DMA实现直接内存访问,减轻CPU负担。2.优化缓冲区管理,使用循环缓冲区或多缓冲区。3.利…

智能垃圾桶在线监测方案

提高垃圾收集率、减少乱丢垃圾是我们共同努力的目标,在人口稠密的城市,垃圾是必要的服务,在许多城市,垃圾车是空的,垃圾随处可见沿线,但它不是有效的方法,因为有很多空间可以很多垃圾离开的路上…

Java Agent之ByteBuddy

1:前言 在上一篇文章介绍 Java Agent 技术时,结合 Byte Buddy 技术实现了统计方法执行时间的功能。本次分享深入介绍 Byte Buddy 的一些基础知识,SkyWalking Agent 强大的地方就是重度使用该工具实现探针数据动态生成代码填充参数的。 2&am…

基于springboot实现在线动漫信息交流分享平台项目【项目源码+论文说明】

基于springboot实现在线动漫信息交流分享平台演示 摘要 随着社会互联网技术的快速发展,每个行业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线动漫信息平台当然也不能排除在外,随着网络技术的不断成熟&#xf…

公司文件防泄密软件——「天锐绿盾」@德人合科技

天锐绿盾是一款企业级数据安全解决方案,主要用于保护企业的知识产权、客户资料、财务数据、技术图纸、应用系统等机密信息化数据不外泄。 PC访问地址: 🔗isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 该软件解决方案…

Three.js如何计算3DObject的2D包围框?

推荐:用 NSDT编辑器 快速搭建可编程3D场景 在Three.js应用开发中,有时你可能需要为3D场景中的网格绘制2D的包围框,应该怎么做? 朴素的想法是把网格的3D包围框投影到屏幕空间,例如,下图中的绿色框 3D包围框…

Linux 部署1Panel 现代化运维管理面板进行公网远程访问

🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透2.1 使用一键脚本安装命令 2.2向系统添加服务2.3 启动cpolar服务…

【名城优企游学】国轩高科,用数字化带来强劲发展动力

成立于2006 年5月,系中国动力电池产业最早进入资本市场的民族企业;2015年5月上市,股票代码SZ.002074,拥有新能源汽车动力锂电池、储能、输配电设备等业务板块,建有独立成熟的研发、采购、生产、销售体系。 它就是新能…

五分钟了解一下什么是「贪心算法 」‼️‼️‼️

五分钟了解一下什么是「贪心算法 」‼️‼️‼️ 1 概念 贪心的意思在于在作出选择时,每次都要选择对自身最为有利的结果,保证自身利益的最大化。贪心算法就是利用这种贪心思想而得出一种算法。 贪心算法作为五大算法之一,在数据结构中的应…

如何进行lidar和imu的外参标定

我们使用的lidar_align这个算法来进行标定。 1.下载源码 在ros工作空间下的src文件夹下运行这个命令。 git clone https://github.com/ethz-asl/lidar_align.gitsudo apt-get install libnlopt-devcd ..catkin_make 这里编译的时候会爆一些错误。我遇到的是: 这…

渗透测试成功的8个关键

渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析&#x…

考试中心|学习资料|学习情况|纯净无广|在线组卷刷题

土著刷题Plus专业版v1.2版本已全面对其个人版功能,完全满足学员培训/刷题考察全套流程,提供完整的服务流程。接下来将主要介绍一下这一版的新功能 考试中心 满足培训机构/刷题组织者考察刷题用户的管理需求,【围绕考试展开】,提供…

SQLite数据库使用时碰到的问题

背景 1、最近使用sqlite数据库,因为轻量,所以,不需要特别的部署服务器环境。 开发的平台使用的是Qt 碰到的问题 1、我在向数据库中插入字段的时候,少写了一个字段的内容,报这个错误 QSqlError("", "…

火焰原子吸收光谱法、容量法和电感耦合等离子体发射光谱法

声明 本文是学习GB-T 1871.5-2022 磷矿石和磷精矿中氧化镁含量的测定 火焰原子吸收光谱法、容量法和电感耦合等离子体发射光谱法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件描述了在磷矿石和磷精矿中测定氧化镁含量的火焰原子吸收…

史上最全 结构型模式之 代理 适配器 装饰者 模式

创建型设计模式 原型模式 建造者模式 创建者模式对比_软工菜鸡的博客-CSDN博客 5,结构型模式 day03 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组…

大模型部署手记(8)LLaMa2+Windows+llama.cpp+英文文本补齐

1.简介: 组织机构:Meta(Facebook) 代码仓:https://github.com/facebookresearch/llama 模型:llama-2-7b 下载:使用download.sh下载 硬件环境:暗影精灵7Plus Windows版本&#…

制药企业纯化水设备的应用及维护:设备健康管理软件的关键作用

纯化水设备在制药企业中扮演着重要角色,为生产高纯度水提供支持。然而,为了确保设备的可靠性和稳定性,有效的维护和管理至关重要。设备健康管理软件PreMaint成为实现这一目标的关键工具。本文将介绍PreMaint软件如何优化纯化水设备的维护&…

Qt_C++读写FM1208 CPU卡源码、支持windows、Linux系统

本示例使用的发卡器&#xff1a; Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) #include "mainwindow.h" #include "./ui_mainwindow.h" #include <QDebug> #include "QLibrary" #include "Q…

政府部门搭建的数字化工具平台有哪些?

政府部门搭建的数字化工具平台多样且广泛&#xff0c;旨在提高行政效能、优化公共服务和促进政务创新。以下是一些常见的数字化工具平台及其功能的详细介绍。 一、电子政务平台 1. 政务门户网站&#xff1a;作为政府对外的窗口&#xff0c;提供政府机构、政策信息、在线办事、…

Redis 的过期键 | Navicat 技术干货

Redis 是一种高性能的内存数据存储&#xff0c;以其速度和多功能性而闻名。其中一个有用的特性是为键设置过期时间的功能。在 Redis 中&#xff0c;为键设置过期时间对于管理数据和确保过时或临时数据自动从数据库中删除是至关重要的。在本文中&#xff0c;我们将探讨在 redis-…