位图算法 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。
- 上一篇:没有了
- 下一篇:没有了