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

位与运算

只有当除数是 2 的幂次方(如 2、4、8、16...)时,取模运算才可以转换为位运算。

	int b = 19;int a1 = b % 16;     // 传统取模运算int a2 = b & 15;     // 位运算替代取模printf("b = %d\n", b);printf("b %% 8 = %d\n", a1);  // 输出: 3printf("b & 7  = %d\n", a2);  // 输出: 3return 0;

为什么?

  • 数学原理
    当除数 n 是 2 的幂次方(如 n = 8)时,b % n 的结果仅由 b 的低 log₂(n) 位决定。例如:

    • b % 8 只需看 b 的低 3 位(因为 8 = 2³)。
    • b % 16 只需看 b 的低 4 位(因为 16 = 2⁴)。

    此时,b % n 等价于 b & (n-1),因为 n-1 的二进制恰好是低 log₂(n) 位全为 1,其余位为 0(如 7 的二进制是 011115 的二进制是 1111)。

http://www.xdnf.cn/news/452503.html

相关文章:

  • 一般枚举题目合集
  • Reverse-WP记录11
  • 如何利用PPG实现呼吸频率检测
  • CD38.【C++ Dev】string类的模拟实现(2)
  • 浏览器渲染原理
  • 【苍穹外卖-管理端部分-学习笔记】
  • AI智能体的现状和应用前景
  • 深入解析 PostgreSQL 外部数据封装器(FDW)的 SELECT 查询执行机制
  • typeof运算符和深拷贝
  • primitive创建图像物体
  • 界面控件DevExpress WinForms v24.2 - 数据处理功能增强
  • Oracle where条件执行先后顺序
  • OpenUCX 库介绍与使用指南
  • 深度解析国际数字影像产业园产校融合的协同发展模式​
  • CMake入门与实践:现代C++项目的构建利器
  • CST软件机箱屏蔽效能仿真案例
  • SAR 原始数据预处理的理解
  • 源码交付+可控部署:用户行为分析系统的落地经验
  • 【Pandas】pandas DataFrame describe
  • 16S18S基础知识(1)
  • Leetcode209做题笔记
  • SCAICH(Scientific AI Search Engine)
  • spring boot 注解
  • 【征稿通知】OCSA 2025投稿享早鸟优惠
  • 如何通过数据集成实现金蝶云星空高效对接
  • Flink CDC—实时数据集成框架
  • [已解决] VS Code / Cursor / Trae 的 PowerShell 终端 conda activate 进不去环境的常见问题
  • JAVA实战开源项目:校园网上店铺系统 (Vue+SpringBoot) 附源码
  • 用 wireshark 解密 SIP over TLS 以及 SRTP 解密
  • libmemcached库api接口讲解三