相关疑难解决方法(0)

(数字和 - 数字)在位编程中意味着什么?

例如:

int get(int i) {
    int res = 0;
    while (i) {
        res = (res + tree[i]) % MOD;
        i -= ( (i) & (-i) );
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

树更新功能:

void update(int i, int val) {
    while (i <= m) {
        tree[i] = (tree[i] + val) % MOD;
        i += ( (i) & (-i) );
    }
}
Run Code Online (Sandbox Code Playgroud)

你能用它解释一下他们在代码中做了什么( (i) & (-i) )吗?

c++ bit bitwise-and fenwick-tree

64
推荐指数
3
解决办法
4469
查看次数

我+ =(i&-i)做什么?它是便携式的吗?

我们i是一个有符号整数类型.考虑

i += (i&-i);
i -= (i&-i);
Run Code Online (Sandbox Code Playgroud)

最初的地方i>0.

  1. 这些怎么办?是否只有使用算术的等效代码?
  2. 这取决于负整数的特定位表示吗?

来源:setter的在线编码拼图代码(没有任何解释/评论).

c++ integer bit-manipulation

16
推荐指数
4
解决办法
2170
查看次数

为正整数找到 2 的质因数分解的最有效方法

我正在用 C 编写代码,并希望找出最有效的方法来确定 2 除以一个数字的次数;即 5 = 0, 8 = 3。我的问题是,对于这段代码,我利用按位运算来加速运行时,总体代码是O(log N),有什么计算或分析可以优化这段代码吗?

int Prime_Factor_Two(int n) {
    int k = 0;
    while(~(n&1) + 2){
        n = n >> 1;
        k +=1;
    }
    return k;
}
Run Code Online (Sandbox Code Playgroud)

c optimization

5
推荐指数
0
解决办法
130
查看次数

c 中 k-=(k &amp; (-k)) 的含义是什么?

一个用于计算我遇到此语句的总和的函数 ..plz 帮助

 int get_sum(int x) {
     int p = 0, k;
     for (k = x; k > 0; k -= k & -k)
         p += bit[k];
     return p;
 }
Run Code Online (Sandbox Code Playgroud)

c loops

2
推荐指数
1
解决办法
417
查看次数