位图算法 C语言
#include <stdio.h>
void set_bit(void *base, unsigned long n)
{
unsigned long *m = (unsigned long*) base;
unsigned long size = sizeof(unsigned long) * 8;
m[ n / size ] |= 1UL << (n % size);
}
void clear_bit(void *base, unsigned long n)
{
unsigned long *m = (unsigned long*) base;
unsigned long size = sizeof(unsigned long) * 8;
m[ n / size ] &= ~(1UL << (n % size));
}
int main()
{
unsigned long value[2] = {0};
set_bit(value, 0);
set_bit(value, 63);
printf("Set:
");
printf("0x%016lx, 0x%016lx
", value[0], value[1]);
clear_bit(value, 0);
clear_bit(value, 63);
printf("Clear:
");
printf("0x%016lx, 0x%016lx
", value[0], value[1]);
return 0;
} 声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
