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

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.lryc.cn/news/2385850.html

相关文章:

  • DAY 35
  • 理论篇一:了解webpack是什么,能解决什么问题,如何使用
  • AWS EC2实例安全远程访问最佳实践
  • 集群、容器云与裸金属服务器的全面对比分析
  • 【强化学习】#7 基于表格型方法的规划和学习
  • EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案
  • Linux/aarch64架构下安装Python的Orekit开发环境
  • 网络安全-等级保护(等保) 3-2-1 GB/T 28449-2019 第6章 方案编制活动
  • Oracle Enqueue Names
  • 【免费使用】剪Y专业版 8.1/CapCut 视频编辑处理,素材和滤镜
  • 【DCGMI专题1】---DCGMI 在 Ubuntu 22.04 上的深度安装指南与原理分析(含架构图解)
  • 道德经总结
  • 实现rpc通信机制(待定)
  • MATLAB 2023b 配电柜温度报警系统仿真
  • 代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)
  • SpringCloud实战:使用Sentinel构建可靠的微服务熔断机制
  • 张 Prompt Tuning--中文数据准确率提升:理性与冲动识别新突破
  • MySQL 中 information_schema.processlist 使用原理
  • 微信小程序学习基础:从入门到精通
  • 如何使用redis做限流(golang实现小样)
  • lanqiaoOJ 4185:费马小定理求逆元
  • 深度剖析ZooKeeper
  • 深入解析 MySQL 中的 SHOW_ROUTINE 权限
  • 电脑网络如何改ip地址?ip地址改不了怎么回事
  • 打开小程序提示请求失败(小程序页面空白)
  • C语言速成12之指针:程序如何在内存迷宫里找宝藏?
  • 一张纸决定的高度
  • IP查询基础介绍
  • 常见的gittee开源项目推荐
  • 日常效率工具【Tools】【持续更新】