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

【C/C++】x -x 的含义

1、含义

-x 的值,其实就是在x的值的基础上进行按位取反(~x)之后在增加1所得(C语言中,-x实现是用取反+1实现)也就是说:x & -x == x & (~x + 1)

2、x 为偶数

当一个奇数 + 1时,表示的二进制数则会发生进位,这样的话,会产生一个连锁反应,也就是最低位的那些连续的1都会被清0,如:0000 0000 0111 1111 + 1 = 0000 0000 1000 0000

如果一个偶数,如 0000 0000 0100 1110,取反后的结果就变成了 1111 1111 1011 0001,而当这个值 + 1之后由于发生了进位,即:1111 1111 1011 0001 + 1 = 1111 1111 1011 0010

初始值 和 取反+1后的值 相 & 后,只会有一位保留为1

0000 0000 0100 1110 & 1111 1111 1011 0010 = 0000 0000 0000 0010 

这个结果与最初的值又有什么关系呢?
🤔显然, 这个值的与原值的末位0的个数是一致的,也就是说,如果一个偶数,在执行 x & -x 的操作时,最后结果肯定有如下两个特征:

① 这个结果只有一位值是1, 其他位均是0 
② 这个值的末位0的个数与原值保持一致

那这是个什么数呢?
🤔这个原值肯定是能被结果值整除的, 而这个结果值又是2^ k,那我们就可以描述成:当一个偶数与它的负值相 & 时,结果是能整除这个偶数的最大的2的幂。【即: m = n & -n ,则 n % m = 0 ,且 m = 2 ^ k】

3、x 为奇数

因为奇数取反后的值一定是偶数, 而偶数的值 + 1之后,并不会影响进位,而 x与其取反的数相 & 结果肯定是0 ,但是由于相 & 的数是取反后再+ 1的值(肯定是个奇数),也就是说,只有最后一位有翻转,所以只有最后一位都是1,相 & 结果仍旧是1,而其他位所有的都是相反值, 相 & 必为0。结论:如果 x 是奇数, 那 x & -x 的结果一定是1

4、❗结论

当一个数与其取负后的值相与(x & -x),如果这个数是偶数,则结果是能整除这个偶数的最大的2的幂(即: m = n & -n , 则 n % m = 0, 且 m = 2 ^ k);如果这个数是奇数,则结果必为1

5、❗用途

一般可以用来获取某个二进制数的 LowBit

相关文章:

【C/C++】x -x 的含义

1、含义 -x 的值,其实就是在x的值的基础上进行按位取反(~x)之后在增加1所得(C语言中,-x实现是用取反1实现)也就是说:x & -x x & (~x 1) 2、x 为偶数 当一个奇数 1时,表示…...

[ZenTao]源码阅读:加载自定义任务类型

www/index.php config/config.php framework/base/router.class.php tmp/model/common.php module/common/model.php framework/router.class.php...

hive分区表 静态分区和动态分区

一、静态分区 现有数据文件 data_file 如下: 2023-08-01,Product A,100.0 2023-08-05,Product B,150.0 2023-08-10,Product A,200.0 1、创建分区表 CREATE TABLE sales (sale_date STRING,product STRING,amount DOUBLE ) PARTITIONED BY (sale_year INT, sale_mon…...

java八股文面试[多线程]——ThreadLocal底层原理和使用场景

源码分析: ThreadLocal中定义了ThreadLocalMap静态内部类,该内部类中又定义了Entry内部类。 ThreadLocalMap定了 Entry数组。 Set方法: Get方法: Thread中定义了两个ThreaLocalMap成员变量: Spring使用ThreadLocal解…...

Android hid发送apdu格式数据

在 Android 中,如果你想通过 HID(Human Interface Device)发送 APDU 格式的数据,通常会涉及 USB HID 设备或蓝牙 HID 设备。HID 协议通常用于键盘、鼠标和其他输入设备,而不是直接与智能卡进行通信。然而,如…...

Unity碰撞检测(3D和2D)

Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi…...

android:控件TextView

一、系统学习Android控制键TextView,我的笔记里面有尝试学着使用自定义控件。 二、具体内容 1.如果在代码中给textView赋值,在xml中也给textView赋值了最后运行出来的结果显示代码中赋的值。因此得出结论,代码中的赋值会覆盖xml所附的值。 …...

3D风速仪 Gill Instruments Limited_R3-50 R3-100 and R3A -100 Manual

R3测量超声波脉冲从上部换能器到相反的下部换能器所花费的时间,并将其与脉冲从下部换能器到上部换能器的时间进行比较。 同样,在其他上下换能器之间比较时间。 如图1所示,每对换能器之间沿轴的空气速度可以从每条轴上的飞行次数计算出来。 …...

深度学习怎么学?

推荐这本小白看的《深度学习:从基础到实践(上下册)》。 深度学习:从基础到实践(上下册) 深入浅出的讲述了深度学习的基本概念与理论知识,不涉及复杂的数学内容,零基础小白也能轻松掌…...

WPF 数据验证

WPF提供了能与数据绑定系统紧密协作的验证功能。提供了两种方法用于捕获非法值: 1、可在数据对象中引发错误。 可以在设置属性时抛出异常,通常WPF会忽略所有在设置属性时抛出的异常,但可以进行配置,从而显示更有帮助的可视化指示…...

IDEA的maven想显示层级关系,而非平级

新版和旧版的IDEA的位置不一样,2023.2.1的版本在右上角的“” 这个位置 如图所示: 然后点击按模块分组:...

(八)k8s实战-身份认证与权限

一、认证 User AccountsService Accounts Service Account 自动化: Service Account Admission ControllerToken ControllerService Account Controller 1、Service Account Admission Controller 通过 Admission Controller 插件来实现对 pod 修改&#xff0c…...

数学建模:TOPSIS分析

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 TOPSIS分析法 算法流程 假设有m个评价对象,n个评价指标,首先需要进行指标的正向化: 极大型极小型单点型区间型 然后对正向化后的矩阵进行标准化,得到 Z Z Z…...

【Qt学习】10 利用QSharedMemory实现单例运行

问题 让应用程序只有一个运行实例 QSharedMemory除了可以完成进程间通信,还可以实现应用程序单例化。 解法 首先,看看QSharedMemory的几个函数: 1、QSharedMemory(const QString &key, QObject *parent Q_NULLPTR)构造函数 该构造函数…...

FPGA应用于图像处理

FPGA应用于图像处理 FPGA(Field-Programmable Gate Array)直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件,具有高度的灵活性,可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电…...

vscode python 无法引入上层目录解决

在vscode 中.vscode 配置如下 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurati…...

[开发|java] java list 取某个属性最大的项

示例代码: import java.util.*;class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public int getAge() {return age;} }public class Main {public static void main(String[] args) {List<Person…...

关闭浏览器的跨域校验

首发博客地址 问题描述 当你访问资源失败&#xff0c;并遇到以下类似提示时&#xff1a; Access to script at 资源路径 from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrom…...

USRP 简介,对于NI软件无线电你所需要了解的一切

什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…...

RTE_Driver驱动框架和Keil下开发需要支持的xxx_DFP软件包分析

1.RTE_Driver驱动框架 RTE_Driver代表"Run-Time Environment Driver"&#xff0c;是Keil MDK&#xff08;Microcontroller Development Kit&#xff09;中的一个概念。Keil MDK是一种用于嵌入式系统开发的集成开发环境&#xff0c;提供了开发、编译、调试等一系列工具…...

大型房地产集团战略规划数字化转型PMO项目进度管理解决方案(PPT)

导读 有一个问题值得认真想一想&#xff1a;一家布局全国、同时管理几十个楼盘的大型地产集团&#xff0c;它的"项目管理"问题&#xff0c;究竟出在哪里&#xff1f; 不是因为缺人&#xff0c;也不是因为团队不努力。事实上&#xff0c;大多数地产集团在规模扩张到一…...

苏姿丰来华,AMD能否借中国市场突破英伟达生态封锁?

苏姿丰访华与AMD战略布局黄仁勋走后第四天&#xff0c;苏姿丰来到上海。上周&#xff0c;黄仁勋在最后一刻挤进特朗普访华队伍&#xff0c;想把英伟达重新带回中国。但他离开北京后&#xff0c;随行企业家很多拿到大单&#xff0c;H200在中国落地仍无明确说法。紧接着&#xff…...

技术架构深度剖析:如何构建专业的浏览器资源嗅探扩展

技术架构深度剖析&#xff1a;如何构建专业的浏览器资源嗅探扩展 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在现代浏览器扩展开发领域&#x…...

从 AI 工具到音乐生态:可酷加速布局,构建数字音乐全新基础设施

当数字音乐行业从流量竞争迈入生态竞争的新阶段&#xff0c;单一产品的功能边界已难以支撑企业长期增长&#xff0c;完善的生态协同能力逐渐成为企业突围的核心竞争力&#xff0c;也成为定义行业未来格局的关键变量。在此背景下&#xff0c;可酷公司近日对外披露其全新发展战略…...

微信好友关系检测完整指南:快速找出谁删了你

微信好友关系检测完整指南&#xff1a;快速找出谁删了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 你是否曾…...

从装饰器原理到实战:手把手教你用TypeScript为NestJS方法实现一个‘网络代理’

从装饰器原理到实战&#xff1a;手把手教你用TypeScript为NestJS方法实现一个‘网络代理’ 在Node.js生态中&#xff0c;装饰器&#xff08;Decorator&#xff09;作为一种元编程工具&#xff0c;正逐渐从实验性特性转变为现代框架的核心支柱。NestJS正是这一趋势的典型代表—…...

GHelper:华硕笔记本终极性能优化解决方案

GHelper&#xff1a;华硕笔记本终极性能优化解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook, RO…...

ETS2LA:卡车模拟游戏中的自动化路径跟随系统如何让你轻松驾驭长途运输?

ETS2LA&#xff1a;卡车模拟游戏中的自动化路径跟随系统如何让你轻松驾驭长途运输&#xff1f; 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-L…...

ElevenLabs瑞典文语音生成延迟超800ms?独家逆向分析其WebRTC音频缓冲机制,给出3行代码级低延迟注入方案

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ElevenLabs瑞典文语音生成延迟超800ms&#xff1f;独家逆向分析其WebRTC音频缓冲机制&#xff0c;给出3行代码级低延迟注入方案 ElevenLabs 在瑞典语&#xff08;sv-SE&#xff09;TTS 服务中默认启用高保真音…...

OmenSuperHub:惠普游戏本性能优化的终极免费解决方案

OmenSuperHub&#xff1a;惠普游戏本性能优化的终极免费解决方案 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普OMEN游戏本设…...