位图算法 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; }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Win32 API 实现系统托盘程序
- 下一篇: MySQL大数据高并发处理之-查询的优化