《编程珠玑》一段代码看不懂,“a[i>>SHIFT] |= (1<<(i & MASK));”
哪位朋友可以帮我解释一下啊?
完整代码是这样子的,顺便问一下,C代码写成这样,得几年功力?
完整代码是这样子的,顺便问一下,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 <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);
/* Replace above 2 lines with below 3 for word-parallel init
int top = 1 + N/BITSPERWORD;
for (i = 0; i < top; i++)
a[i] = 0;
*/
while (scanf("%d", &i) != EOF)
set(i);
for (i = 0; i < N; i++)
if (test(i))
printf("%d\n", i);
return 0;
}
...全文
相关推荐
编程珠玑总结笔记
[1 + N/32];void set(int i) { a[i>>SHIFT] |= (1<<(i & MASK));}void clr(int i) { a[i>>SHIFT] &= ~(1<<(i
编程珠玑源代码
《编程珠玑源代码》是针对经典书籍《编程珠玑》第二版的源代码集合,主要涵盖C语言和C++编程。
《编程珠玑》第2版中文PDF+源代码
**编程艺术**:《编程珠玑》强调了编写高效、可读和可维护代码的重要性。书中讨论了如何通过代码重构和模块化设计提升代码质量,以及如何通过测试和调试确保代码的正确性。3.
编程珠玑 Programming Pearls 第二版(中文版+源代码)
**代码可读性和可维护性**:《编程珠玑》倡导编写清晰、简洁的代码,以增强代码的可读性和可维护性。这包括了良好的注释习惯、代码组织结构以及模块化设计的原则。8.
编程珠玑 第2版(修订版)_编程珠玑修订_资料_
这本书的修订版更是在原版基础上进行了更新和完善,旨在帮助程序员提升编程技能,解决实际问题,并在软件设计中找到最优解。在编程领域,"珠玑"往往被用来比喻那些精炼、实用且富有智慧的编程技巧。


