lowbit()

简介: lowbit()

lowbit()

简介:众所周知,lowbit()操作是算法竞赛中的高级技巧,特别是高级数据结构,线段树的核心,还有什么二进制与位运算题目,而本文就用最通俗易懂的话,来教会大家lowbit的含义。

含义:lowbit(x)是x的二进制表达式中最低位的1所对应的值。

什么意思了:

十进制 二进制 最低位的1所对应的值对应的二进制数 最低位的1所对应的值对应的十进制数

1 1 1 1

2 10 10 2

3 111 1 1

4 100 100 4

5 101 1 1

6 110 10 2

7 111 1 1

方法:我们得到lowbit的值,只需要得到最后一个1的位置,并且把除了这个位置之外的所有位置全部置成零。然后输出就可以。

先上代码:

int lowbit(int x)
{
    return x&(-x);
}

这个代码实在是很简单,就是一个数与它的负数进行与运算。

我们希望获得一个数的最低位的1所对应值,那么就需要将这个数字与自己的补码取与,那么计算机中一个数的补码是啥了,没错就是这个数字的负数(负数就是正数的反码+1),

为啥和补码去与就可以了:

(110)2 = 6 原码

(001)2 反码

(010)2 补码

可以发现变为反码后 x 与反码数字位每一位都不同, 所以当反码加1,成为补码的时候,反码会逢1一直进位直到遇到0,且这个0变成了1,然后就寻找到了,第一个不为0的1的位置,而且这个1前面的数字,全部变成了0.

相关文章
|
5月前
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
182 1
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
4月前
|
安全 Java 数据安全/隐私保护
适合才最美:Shiro安全框架使用心得
大家好,我是 V 哥。Apache Shiro 是一个强大且灵活的 Java 安全框架,专注于认证、授权、会话管理和加密功能。它常用于保护 Java 应用的访问控制,特别是在 Web 应用中。相比 Spring Security,Shiro 设计更简洁,适合轻量级应用,并且在许多方面具有更好的易用性和扩展性。本文将介绍 Shiro 的核心概念、主要功能和优势,并通过一个典型的 Shiro 应用来展示其基本使用方法。
245 4
|
4月前
|
Linux 数据库
linux 全局搜索文件
在 Linux 系统中,全局搜索文件常用 `find`、`locate` 和 `grep` 命令。`find` 根据文件名、类型、大小、时间戳等条件搜索;`locate` 通过预构建的数据库快速查找文件;`grep` 在文件中搜索特定文本,常与 `find` 结合使用。选择合适的命令取决于具体需求。
303 2
|
7月前
|
SQL 关系型数据库 MySQL
navicat如何获取MySQL数据库的所有表名称
【8月更文挑战第7天】navicat如何获取MySQL数据库的所有表名称
444 4
|
8月前
vue3 在 watchEffect 里中断未完成的 axios 请求(只保留最后一次请求的方法---连续点击查询按钮的优化)
vue3 在 watchEffect 里中断未完成的 axios 请求(只保留最后一次请求的方法---连续点击查询按钮的优化)
175 0
|
云计算
阿里云短信群发、验证码、短信提醒费用价格表
阿里云短信群发、验证码、短信提醒费用价格表,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
587 0
|
存储 C++ 索引
C++ 序列容器Vector各种方法实现原理(带你从本质理解Vector容器)(上)
C++ 序列容器Vector各种方法实现原理(带你从本质理解Vector容器)
|
JSON API 数据格式
如何获取虾皮shopee根据ID取商品详情 API接口
以下是一篇关于如何使用Shopee API接口根据商品ID获取商品详情的5000字文章,包括API接口的基本信息、请求方法、请求参数、返回数据等,以及使用Python进行API调用的示例代码。
怎么添加文章目录,然后点击目录跳转到对应的内容目录标题+怎么打开MarkDown编辑
怎么添加文章目录,然后点击目录跳转到对应的内容目录标题+怎么打开MarkDown编辑
175 0
|
Prometheus Cloud Native
kubenetes部署prometheus+grafana
kubenetes部署prometheus+grafana
163 0