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

位运算--(二进制中1的个数)

        位运算是计算机科学中一种高效的操作方式,常用于处理二进制数据。在Java中,位运算通常通过位移操作符和位与操作符实现。

        当然位运算还有一些其他的奇淫巧计,今天介绍两个常用的位运算方法:返回整数x的二进制第k位的值和返回x的最后一位1。

1. 返回x的二进制第k位的值

方法:x >> k & 1

示例

        假设我们有一个整数x = 13(二进制为1101),而我们希望获取其第2位的值(从0开始计数),即 k = 2

int x = 13; // 二进制表示为 1101
int k = 2;  
int bitValue = (x >> k) & 1; // (1101 >> 2) = 0011, 最后 & 1 = 1
System.out.println(bitValue); // 输出 1

原理解释

  • >> 代表右移运算符,它会将x的二进制位向右移动k位。
  • & 代表位与运算符,它会将两个相应位进行比较,当两个相应位均为1时,结果为1,否则为0。

        通过右移k位后,原本第k位的数据会移到最右侧,即最低位,接下来使用& 1可以判断这个最低位的值是0还是1。

        在这个例子中,右移2位后,二进制表示变为 0011,然后通过& 1获取最后一位的值,结果是1,说明x的第2位为1 。

2. lowbit(x) 返回x的最后一位1

方法:x & -x

示例

import java.io.BufferedInputStream;
import java.util.Scanner;/*** 位运算** 1.返回x的二进制第k位的值   x>>k & 1* 2.lowbit(x)返回x的最后一位1   x & -x*/public class Main {public static int lowbit(int x) {return x & -x;//返回x的最后一位1}public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));int n = sc.nextInt();//n为数列的长度while (n-- > 0) {int x = sc.nextInt();int res = 0;while (x > 0) {x -= lowbit(x);//每次减去x的最后一位1res++;}System.out.print(res+" ");//输出二进制中1的个数}}
}

 原理解释

        在这里,-x表示x的补码,补码的计算是通过对x进行按位取反后加1实现的。x & -x的目的就是找到x的二进制表示中最右边的1所在的位置。

        通过这个运算,我们可以得到x的最后一位1,其他位均被清零

总结

        位运算性能优越,适用于多种场景。通过介绍这两种基本位操作,我们可以更加深入地理解和运用位运算,从而提升编程效率。

        希望能对你有所帮助……

相关文章:

位运算--(二进制中1的个数)

位运算是计算机科学中一种高效的操作方式,常用于处理二进制数据。在Java中,位运算通常通过位移操作符和位与操作符实现。 当然位运算还有一些其他的奇淫巧计,今天介绍两个常用的位运算方法:返回整数x的二进制第k位的值和返回x的最…...

使用Docker和Macvlan驱动程序模拟跨主机跨网段通信

以下是使用Docker和Macvlan驱动程序模拟跨主机跨网段通信的架构图: #mermaid-svg-b7wuGoTr6eQYSNHJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-b7wuGoTr6eQYSNHJ .error-icon{fill:#552222;}#mermai…...

RestCloud webservice 流程设计

RestCloud webservice 流程设计 操作步骤 离线数据集成(首页) → \rightarrow → 示例应用数据集成流程(边栏) → \rightarrow → 所有数据流程 → \rightarrow → webservice节点获取城市列表 → \rightarrow → 流程设计 …...

从入门到精通:QT 100个关键技术关键词

Qt基础概念 Qt Framework - 一个跨平台的C图形用户界面应用程序开发框架。它不仅提供了丰富的GUI组件,还包括网络、数据库访问、多媒体支持等功能。 Qt Creator - Qt官方提供的集成开发环境(IDE),集成了代码编辑器、项目管理工具、…...

2024年双十一值得入手的好物有哪些?五大性价比拉满闭眼入好物盘点

随着2024年双十一购物狂欢节的临近,消费者们纷纷开始关注各类好物,期待在这一天能够以最优惠的价格入手心仪的商品,在这个特殊的时刻,我们为大家盘点了五大性价比拉满的闭眼入好物,这些产品不仅品质卓越,而…...

Hbase日常运维

1 Hbase日常运维 1.1 监控Hbase运行状况 1.1.1 操作系统 1.1.1.1 IO 群集网络IO,磁盘IO,HDFS IO IO越大说明文件读写操作越多。当IO突然增加时,有可能:1.compact队列较大,集群正在进行大量压缩操作。 2.正在执行…...

鸿蒙开发的基本技术栈及学习路线

随着智能终端设备的不断普及与技术的进步,华为推出的鸿蒙操作系统(HarmonyOS)迅速引起了全球的关注。作为一个面向多种设备的分布式操作系统,鸿蒙不仅支持手机、平板、智能穿戴设备等,还支持IoT(物联网&…...

【算法】反向传播算法

David Rumelhart 是人工智能领域的先驱之一,他与 James McClelland 等人在1986年通过其著作《Parallel Distributed Processing: Explorations in the Microstructure of Cognition》详细介绍了反向传播算法(Backpropagation),这一…...

外贸非洲市场要如何开发

刚不久前中非合作峰会论坛之后,取消了非洲33国的进口关税,中非贸易一直以来都还不错,这次应该会更上一个台阶。今天就来给大家分享一下,关于非洲市场的一些分析和开发方法。 一、非洲市场情况 非洲是一个广阔的大陆,由…...

python去除空格join()

sinput().split() print( .join(s)) input().split()的作用: split()是字符串对象的方法。当对一个字符串调用split()方法时,它会根据指定的分隔符将字符串分割成多个子字符串,并将这些子字符串以列表的形式返回。如果不指定分隔符&#xf…...

git push错误:Out of memory, malloc failed (tried toallocate 947912704 bytes)

目录 一、错误截图 二、解决办法 一、错误截图 因项目文件过大,http.postBuffer设置的内存不够,所以报错。 二、解决办法 打开cmd窗口,执行如下命令即可 git config --global http.postBuffer 1024000000 如图所示 执行完成以后&#…...

web平台搭建-LAMP(CentOS-7)

一. 准备工作 环境要求: 操作系统:CentOS 7.X 64位 网络配置:nmtui字符终端图形管理工具或者直接编辑配置文件 关闭SELinux和firewalld防火墙 防火墙: 临时关闭:systemctl stop firewalld 永久关闭:systemc…...

2024.9.21 Python与C++的面试八股文整理,类与对象,内存规划,默认函数,虚函数,封装继承多态

1.什么是类,什么是面向对象 (1)类是一种蓝图或者模板,用于定义对象的属性和行为,类通常包括:属性,也就是静态特征,方法,也就是动态特征。属性描述对象的特征&#xff0c…...

2024 vue3入门教程:02 我的第一个vue页面

1.打开src下的App.vue,删除所有的默认代码 2.更换为自己写的代码, 变量msg:可以自定义为其他(建议不要使用vue的关键字) 我的的第一个vue:可以更换为其他自定义文字 3.运行命令两步走 下载依赖 cnpm i…...

[go] 状态模式

状态模式 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 模型说明 上下文 (Context) 保存了对于一个具体状态对象的引用, 并会将所有与该状态相关的工作委派给它。 上下文通过状态接口与状态对象交互&…...

uniapp沉浸式导航栏+自定义导航栏组件

在 UniApp 中实现沉浸式导航栏并结合自定义导航栏组件 一、沉浸式导航栏设置 在pages.json中配置页面样式 在需要设置沉浸式导航栏的页面的style选项中进行如下配置: {"pages": [{"path": "pages/pageName/pageName","style&qu…...

光伏仿真:排布设计如何优化用户体验?

1、屋顶绘制精准 光伏系统的性能直接受到屋顶结构的影响,因此,屋顶绘制的精准性是光伏仿真设计的首要任务。现代光伏仿真软件通过直观的界面和强大的图形编辑功能,使得用户能够轻松导入或绘制出待安装光伏系统的屋顶形状。无论是平面屋顶、斜…...

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中,浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后,官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…...

鸿萌数据恢复:如何降低 RAM 故障风险,以避免数据丢失?

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 RAM 可能因多种原因而发生故障,并将设备和数据置…...

使用java实现ffmpeg的各种操作

以实现如下功能 1、支持音频文件转mp3;2、支持视频文件转mp4;3、支持视频提取音频;4、支持视频中提取缩略图;5、支持按时长拆分音频文件; 1、工具类 由于部分原因,没有将FfmpegUtil中的静态的命令行与Ty…...

小型电商自动化:OpenClaw+nanobot处理订单邮件

小型电商自动化:OpenClawnanobot处理订单邮件 1. 为什么选择OpenClaw处理电商订单 作为一个经营小型电商的个体商户,我每天要处理几十封来自Gmail的订单邮件。这些邮件包含客户信息、商品清单和收货地址,需要手动录入到库存表格、生成物流单…...

5分钟搞定ollama+qwen2.5模型配置:从下载到对话测试全流程指南

5分钟极速部署ollama与qwen2.5:零基础打造本地AI对话系统 在AI技术平民化的今天,拥有一个本地运行的对话模型不再是专业开发者的专利。本文将带您用最短时间完成ollama服务部署与qwen2.5模型配置,无需复杂环境搭建,从零开始构建属…...

WorkBuddy杀疯了?一群AI专家帮我打工,我在微信里当赛博虾工头!

梦瑶 发自 凹非寺量子位 | 公众号 QbitAI到底是谁说,给老板打工自己就当不成老板的?又是谁说,龙虾不好用、还不听使唤的?反正这些事儿,现在跟我没啥关系了。毕竟现在的我,已经转头当起了「虾工头」&#xf…...

C++/Qt 使用 Tushare 获取股票信息

探索数据之源:使用tushare为Qt/C学习项目获取股票数据在进行金融量化分析或学习金融市场行为时,获取高质量、结构化的股票数据是至关重要的第一步。作为一个计划将Qt/C用于金融数据可视化或策略模拟的学习者,我近期深入体验了使用Python库tus…...

电池基本概念

1、SOC和SOH:指标核心定义物理意义取值范围关键作用SOCState of Charge(荷电状态),表示电池当前剩余容量占其实际可用容量的百分比电池 “当前电量”(类似手机电量)0%~100%指导充放电控制(如电动…...

密码安全必修课:为什么BCrypt比MD5更适合存储用户密码?

密码安全必修课:为什么BCrypt比MD5更适合存储用户密码? 在数字身份成为第二张身份证的时代,密码安全早已不是技术圈的内部话题。去年某社交平台600万用户数据泄露事件中,令人震惊的不是数据被盗本身,而是其中87%的密码…...

从Kinect到奥比中光:为什么我的深度学习项目选了Gemini 2L?附Python SDK踩坑实录

从Kinect到奥比中光:为什么我的深度学习项目选了Gemini 2L?附Python SDK踩坑实录 深度视觉技术正在重塑人机交互的边界。当我的团队启动一个需要实时三维重建的农业机器人项目时,我们面临着一个关键抉择:在众多深度相机品牌中&…...

零成本实现3D模型跨平台迁移:Blender到Unreal Engine的无缝解决方案

零成本实现3D模型跨平台迁移:Blender到Unreal Engine的无缝解决方案 【免费下载链接】bl_datasmith Blender addon to export UE4 Datasmith format 项目地址: https://gitcode.com/gh_mirrors/bl/bl_datasmith 你是否曾遇到这样的困境:在Blender…...

CTP行情接口避坑指南:从‘不合法的登录’到稳定接收tick数据的5个关键步骤

CTP行情接口实战避坑手册:从登录异常到稳定接收tick的深度解决方案 当你在深夜调试CTP行情接口时,突然看到控制台跳出"不合法的登录"错误提示,而距离第二天开盘只剩3小时——这种场景恐怕不少量化开发者都经历过。本文将分享5个关键…...

别再为气象数据发愁!手把手教你用HYSPLIT做后向轨迹分析(附GDAS1数据下载指南)

从零掌握HYSPLIT后向轨迹分析:气象数据获取与实战技巧全解析 当你在环境科学或大气污染研究中首次接触HYSPLIT模型时,最令人头疼的往往不是软件操作本身,而是那些看似简单却暗藏玄机的气象数据准备工作。我曾见过无数研究生在深夜实验室里反复…...