阅读第一章,我知道了这本书得精读,因为扫描的时候发现什么都没看懂........
只能精读+思考,使用位图表示大量的数据,用0/1标示,的确令人眼前一亮.....以前觉得没大用的位运算符挨个上场.......
#include <stdio.h>
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
int a[1 + N/BITSPERWORD];
void set(int i)
{
a[i >> SHIFT] |= (1 << (i & MASK));
}
void clr(int i)
{
a[i >> SHIFT] &= ~(1 << (i & MASK));
}
int test(int i)
{
return a[i >> SHIFT] & (1 << (i & MASK));
}
int main()
{
int i;
for (i = 0; i < N; i++)
clr(i);
while (scanf("%d", &i) != EOF)
set(i);
for (i = 0; i < N; i++)
if (test(i))
printf("%d/n", i);
return 0;
}
那么思想就是....具体问题具体分析,犀利呀.
本文介绍了一种使用位操作来高效管理大量数据的方法。通过定义数组并利用位运算符,可以实现数据的有效存储与检索。文中提供了具体的C语言实现代码,包括设置、清除及测试位等操作。
1595





