|
测试
int main()
{
int A[] = {0,1,2,3,4,5,6,7,8,9};
int n,i;
int *C;
n = 9;
C = init_C(A, n);
for (i=1;i<=n;i++)
printf("%d\n", C[i]);
printf("C%d: %d\n", n, sum(C,n,5));
printf("C%d: %d\n", n, sum(C,n,9));
}
1207阅读 2评论2009-11-19 朝花夕拾
分类:
|
http://www.nocow.cn/index.php/%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84
lowbit(x) 就是求x的二进制表示从最低位的1及其后面的0所表示的数 比如6,二进制110, 那么lowbit(6) = (10)2 = 2 比如8,二进制1000,那么lowbit(8) = (100)2 = 8 求最低位的1及其后面的0所表示的数值,可以 1. 使用 NOT x,先把最低位的1及其后面的零取反,然后再加1,他们又变回原值,高位不变;这样做的结果就是把让最低位1及其后面的0保持不变,其它位取反 2. x & (NOT x +1),就是lowbit(x) 由于NOT x +1 就是二进制补码的 -x,所以 lowbit(x) = x & (-x)