Tag: 编程 珍珠

帮我理解这个“编程珍珠”bitort程序

Jon Bentley在其编程珍珠的第1栏中介绍了一种使用位向量对非零正整数序列进行排序的技术。 我从这里获取了programort.c程序并粘贴在下面: /* Copyright (C) 1999 Lucent Technologies */ /* From ‘Programming Pearls’ by Jon Bentley */ /* bitsort.c — bitmap sort from Column 1 * Sort distinct integers in the range [0..N-1] */ #include #define BITSPERWORD 32 #define SHIFT 5 #define MASK 0x1F #define N 10000000 int a[1 + N/BITSPERWORD]; void set(int i) […]

以下程序中的位掩码用法来自Programming Pearls

我今天开始阅读“Programming Pearls”,在进行练习时,我遇到了这个问题“你将如何实现自己的位向量?”。 当我查看解决方案时,它是这样的: #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)); 我对这个陈述感到困惑的地方 1 << (i & MASK) 有人可以解释一下这里发生了什么吗?