如何使用c语言位运算实现bitset功能

 时间:2024-10-11 18:38:29

1、首先定义一个结构体,保存处理最大位数以及动态申请对应内存大小的空间。我们以最小的1个字节(unsigned char)来存储空间。

如何使用c语言位运算实现bitset功能

2、初始化结构体时,我们传入保存最大位数数值作为参数。因为计算机中都是二进制,所以传入位数对应的字斤谯噌最大值为2的n+1幂次方减1。需要对传入参数进行内部转化为实际字节数,1个字节包含8个比特位,所以对于不足8位的我们也需要申请1个字节。

如何使用c语言位运算实现bitset功能

3、初始化结构体时,我们将所有比特位都初始化设置为0。如何判断某个比特位是否已设置为1?首先需要计算对应比特位到底在哪里?因为我们申请的是8个比特组成的字节。所以需要计算实际位置。

如何使用c语言位运算实现bitset功能

4、 如何计算输入的位数对应字节数组中哪里?假设输入为P,那么首先对应数组中为P/8,然后字节中具体的位数为P%8。2. 使用或运算(|),只有1 | 1 的情况下才会等于1。所以我们使用或运算判断某个比特位设置为1。3. 使用与运算(&),1或0 & 0 == 0, 1或0 & 1 == 原数据。所以使用与运算清空某个比特位。我们看一下清空某个比特位的执行方法如下:

如何使用c语言位运算实现bitset功能

5、我们提供了设置和清除方法,最后提供一个方法,判断某个位是否已被设置。

如何使用c语言位运算实现bitset功能

6、最后我们写个验证程序,校验程序运行正常。同时,因为结构体使用堆栈内存,我们并且提供了释放结构体函数。

如何使用c语言位运算实现bitset功能
如何使用c语言位运算实现bitset功能
  • mnist数据集下载失败如何处理?
  • 如何给正方形添加橙色波浪线图案
  • Altium designer 16安装图文教程
  • Linux添加多个工作区 Linux添加多个虚拟桌面
  • STM32开发工具keil_MDK-ARM 安装
  • 热门搜索
    争做文明使者手抄报 民族精神代代传手抄报 关于运动的手抄报 四年级环保手抄报 祖国我为你骄傲手抄报 认识大自然手抄报 科幻画手抄报 小学生感恩节手抄报 综合实践手抄报 古诗词手抄报