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

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);
}
http://www.xdnf.cn/news/7802.html

相关文章:

  • 宝塔安装的 MySQL 无法连接的情况及解决方案
  • StepX-Edit:一个通用图像编辑框架——论文阅读笔记
  • 计算机网络相关面试题
  • 安全可控的AI底座:灯塔大模型应用开发平台全面实现国产信创兼容适配认证
  • 数据被泄露了怎么办?
  • 视觉生成新突破!仅0.5B参数,SimpleAR解锁预训练、SFT、RL全能模式
  • 【MC】红石比较器
  • Spring Boot 项目中 Redis 存储 Session 对象序列化处理
  • 面向未来,遨游推出5G-A智能防爆对讲机等系列终端
  • Qt功能区:Ribbon控件
  • BEVDet
  • opencv_version_win32
  • Leetcode-2 最小偶倍数
  • pikachu靶场 暴力破解
  • 服务器安装xfce桌面环境并通过浏览器操控
  • SpringBoot外部化配置
  • NIFI的处理器:ExecuteGroovyScript 2.4.0
  • 第14天-Matplotlib实现数据可视化
  • ollama使用gpu运行大模型
  • Xilinx 7Series\UltraScale 在线升级FLASH STARTUPE2和STARTUPE3使用
  • Java 定时任务中Cron 表达式与固定频率调度的区别及使用场景
  • 唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效
  • STL中的Vector(顺序表)
  • RabbitMQ——消息确认
  • NLP学习路线图(三): 微积分(梯度、导数等)
  • 有没有其他影视app可以像群晖video station一样可以被Windows的本地网络驱动器找到
  • 【Vue3】数据的返回和响应式处理(ref reactive)
  • 自建srs实时视频服务器支持RTMP推流和拉流
  • Kotlin 极简小抄 P8(不可空类型、可空类型、注意事项、非空断言 !!)
  • 什么是endpoints?