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

lowbit小解

lowbit小解

提问:求一个正整数的二进制最小非零位
遍历肯定能解,但不是最方便的方法,因此计算机算法学者发明了lowbit函数以达成目标

lowbit是一个在计算机科学和算法中常用的函数,尤其在​​树状数组(Fenwick Tree)等数据结构中扮演重要角色。它的作用是​​快速求出一个整数的二进制表示中最低位的 1 及其后面的 0 所构成的数值​​。
​​1. lowbit 的定义​​
对于一个整数 x,lowbit(x)返回 x的二进制表示中​​最低位的 1 及其后面的 0 所组成的数值​​。
​​数学表达式​​:

lowbit(x)=x&(−x)

其中 &是按位与运算符,-x是 x的二进制补码表示。
​​2. 原理分析​​
​​(1) 补码表示​​
在计算机中,负数是用​​补码​​表示的。对于一个整数 x,其补码 -x可以表示为:

−x=∼x+1

其中 ~x是 x的按位取反。

​​(2) 按位与运算​​
计算 x & (-x)时:
~x会将 x的所有二进制位取反。
~x + 1会导致最低位的 1 变成 0,并产生一个进位,使得更高位的 0 变成 1。
最终 x & (-x)会保留 x的最低位的 1,而其他位全部置 0。
​​示例​​:
设 x = 12,其二进制表示为 1100。
-x的补码计算:
~x = 0011(按位取反)
~x + 1 = 0100(补码)
x & (-x) = 1100 & 0100 = 0100(即 4)。
所以 lowbit(12) = 4。

代码也非常简单

int lowbit(int x) {return x & (-x);
}
http://www.dtcms.com/a/287784.html

相关文章:

  • C#操作WPS表格
  • LVS工作模式和算法的总结
  • 【RK3576】【Android14】摄像头MIPI开发调试
  • 基于单片机智能插座设计/智能开关
  • 了解pycharm的基本运用
  • Qt笔记整理(1)
  • 使用PyInstaller打包 Python 工程
  • 【C++基础】内存对齐原则与性能影响:面试高频考点与真题解析
  • CSS篇——第二章 六十五项关键技能(下篇)
  • 统计学习方法的三要素
  • Github Actions Workflows 上传 Dropbox
  • 物联网-规则引擎的定义
  • 解决问题七大步骤
  • python基础复习
  • 【RL第一篇】强化学习入门:核心概念全面详解
  • 永磁同步电机控制算法--弱磁控制(变交轴CCR-VQV)
  • vue2 面试题及详细答案150道(141 - 150)
  • VUE2 学习笔记1
  • ndexedDB 与 LocalStorage:全面对比分析
  • 4 ASPICE的支持过程
  • docker构建springboot镜像
  • 【初识数据结构】CS61B中的基本图算法:DFS, BFS, Dijkstra, A* 算法及其来历用法
  • 字节跳动开源Seed-X 7B多语言翻译模型:28语种全覆盖,性能超越GPT-4、Gemini-2.5与Claude-3.5
  • 【开源项目】GPT学术优化 - GPT Academic
  • 探秘边缘安全架构设计要点解析
  • Linux 自旋锁
  • 四阶电商SEO审计指南:诊断流量漏洞→重建增长引擎(附免费工作簿)
  • 音频3A处理简介之AEC(回音消除)
  • 文生图-StoryGAN:用于故事可视化的顺序条件GAN
  • 《YOLOv13魔术师专栏》全景指南:从理论到工业级实战