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

linux 学习之位图(bitmap)数据结构

bitmap

可以高效地表示大量的布尔值,并且在许多情况下可以提供快速的位操作。

1 定义

enum device_state{DOWN,DOEN_DONE,MAILBOX_READY,MAILBOX_PENDING,STATE_BUILD
};DECLARE_BITMAP(state,STATE_BUILD)

相当于=》u32 state[BITS_TO_LONGS(4)]

BITS_TO_LONGS(bits) 计算bits 中有多少个 8 字节(32位)元素;

2 函数

set_bit
clear_bit

// 设置指定位置的位值为1
BITMAP_SIZE = 32 //64
void setBit(bool bitmap[], int pos) {int index = pos / BITMAP_SIZE;int offset = pos % BITMAP_SIZE;bitmap[index] |= (1 << offset);
}bool getBit(bool bitmap[], int pos) {int index = pos / BITMAP_SIZE;int offset = pos % BITMAP_SIZE;return (bitmap[index] >> offset) & 1;
}
void clearBit(bool bitmap[], int pos) {int index = pos / BITMAP_SIZE;int offset = pos % BITMAP_SIZE;bitmap[index] &= ~(1UL << index);
}

相关文章:

  • Leetcode-2 最小偶倍数
  • Leetcode-3 判断根结点是否等于子结点之和
  • 【专四 | 2022年真题】LANGUAGE USAGE逐题总结
  • SpringBoot微服务编写Dockerfile流程及问题汇总
  • day32 python解释性库PDPbox
  • 差分数组 - 对区间内元素的统一操作
  • Coze工作流-选择器的用法
  • LangChain入门和应用#1
  • COMPUTEX 2025 | 广和通5G AI MiFi解决方案助力移动宽带终端迈向AI新未来
  • 【java第19集】java面向对象编程详解
  • k8s-NetworkPolicy
  • Datawhale 5月llm-universe 第4次笔记
  • 【题解-洛谷】P6180 [USACO15DEC] Breed Counting S
  • docker面试题(4)
  • Win11上安装docker
  • 深度学习+Flask 打包一个AI模型接口并部署上线
  • 系统架构设计师案例分析题——数据库缓存篇
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.9)
  • 第14天-Matplotlib实现数据可视化
  • 计算机视觉与深度学习 | Python实现CEEMDAN-ABC-VMD-DBO-CNN-LSTM时间序列预测(完整源码和数据)
  • 欧洲要求参与俄乌谈判,美称俄乌不需要第三方
  • 特朗普集团在越南开建度假村,探讨在胡志明市建摩天大楼
  • 现代科学中的盲点
  • 深一度|有望冲击首轮秀?杨瀚森走出舒适圈站上大舞台
  • 梅花奖在上海丨好戏在上海不缺观众,冷门剧种叫好又叫座
  • 菲律宾华人“钢铁大王”撕票案两主谋落网,部分赎金已被提取