标签: bitwise-and

按位和(&)正数和负数的含义?

任何人都可以帮忙n&-n吗?它的意义何在?

c++ bitwise-and

9
推荐指数
4
解决办法
4510
查看次数

将按位比较从C++转换为C#

我是来自cpp源的给定条件.

if (!(faces & activeFace) || [...]) { ... }
Run Code Online (Sandbox Code Playgroud)

我想把它翻译成C#.

当我理解这一点时,这意味着if activeFace is *not* in faces then...- 不是吗?

那么C#中的等价物是什么?
注意:我不能使用faces.HasFlag(activeFace)

那应该是

if ((faces & activeFace) == 0 || [...]) { ... }
Run Code Online (Sandbox Code Playgroud)

我对吗?

为了完整性,这里是实际的标志枚举

[Flags]
enum Face {
    North = 1,
    East = 2,
    South = 4,
    West = 8,
    Top = 16,
    Bottom = 32
};
Run Code Online (Sandbox Code Playgroud)

那么它在cpp中是一样的,你只需要[Flags]在C#中添加一个属性

c# bitwise-operators bitwise-and

9
推荐指数
1
解决办法
172
查看次数

测试奇数

最常见的是,模运算符%用于测试偶数或奇数.

现在的问题是,有没有使用按位对奇数任何问题的测试和,因为它感觉更自然的测试最右边的位是10不是做对一个模校验2

并且因为32位转换不会改变最右边的位.

(1 + Math.pow(2,52)) & 1 //1

(1 + Math.pow(2,52)) % 2 //1

产生相同的结果.

是否有理由更喜欢模运算符而不是按位?

编辑:这个问题只考虑了64位精度范围内的值,因为只有偶数可以精确地表示在2 ^ 53以上,因此两个操作数都会失败(9007199254740993 % 2 //0)

javascript modulo bitwise-and

8
推荐指数
1
解决办法
235
查看次数

为什么使用 0xff 对字符进行按位与运算?

我正在阅读一些实现简单解析器的代码。一个名为的函数将scan一行分解为标记。scan有一个静态变量bp,分配给要标记的行。在分配之后,空格被跳过。见下文。我不明白的是为什么代码对bp指向 with的字符进行按位和处理0xff,即, 的目的是* bp & 0xff什么?这怎么样:

while (isspace(* bp & 0xff))
    ++ bp;
Run Code Online (Sandbox Code Playgroud)

与此不同:

while (isspace(* bp))
    ++ bp;
Run Code Online (Sandbox Code Playgroud)

这是scan函数:

static enum tokens scan (const char * buf)
                    /* return token = next input symbol */
{   static const char * bp;

    while (isspace(* bp & 0xff))
        ++ bp;

        ..
}
Run Code Online (Sandbox Code Playgroud)

c char integer-promotion bitwise-and isspace

8
推荐指数
1
解决办法
148
查看次数

按位代码"$ n&($ n - 1)"有什么作用?

这段代码意味着什么,以及在不使用位移的情况下以其他方式实现同​​样的目标?

if ($n & ($n - 1))
Run Code Online (Sandbox Code Playgroud)

php bit-manipulation bitwise-and

6
推荐指数
2
解决办法
3915
查看次数

按位&在javascript中没有返回预期的结果

我在javascript中使用BitWise AND运算符.

我有两个32位的nunber

4294901760 (11111111 11111111 00000000 00000000) and

4294967040 (11111111 11111111 11111111 00000000)
Run Code Online (Sandbox Code Playgroud)

当我和他们按位时, 4294901760 & 4294967040我得到-65536,但结果应该是4294901760.

任何人都可以指导我,我错过了什么吗?或者做到这一点的正确方法是什么.谢谢

javascript bitwise-and

6
推荐指数
1
解决办法
191
查看次数

BITWISE和(&)的数字范围

给定两个数字L&R,查找位于L和R之间的所有数字的按位和

制约因素1<= L,R <= (2^32).

LL step = 1;
    while(L!=R)
    {
        L/=2; R/=2; step*=2;
    }
    cout<<L*step<<endl;
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解释上面代码背后的解释或逻辑吗?

bit-manipulation bitwise-operators bitwise-and

6
推荐指数
2
解决办法
2134
查看次数

为什么ArrayDeque类在pollFirst方法中使用按位运算?

我通过java源代码看看尝试学习集合的实现.在ArrayDeque类中发现了一件有趣的事情.

public E pollFirst() {
    int h = head;
    @SuppressWarnings("unchecked")
    E result = (E) elements[h];
    // Element is null if deque empty
    if (result == null)
        return null;
    elements[h] = null;     // Must null out slot
    head = (h + 1) & (elements.length - 1);
    return result;
}

public E pollLast() {
    int t = (tail - 1) & (elements.length - 1);
    @SuppressWarnings("unchecked")
    E result = (E) elements[t];
    if (result == null)
        return null;
    elements[t] = null;
    tail = t; …
Run Code Online (Sandbox Code Playgroud)

java collections bitwise-operators bitwise-and arraydeque

6
推荐指数
1
解决办法
315
查看次数

是否有任何理由使用(nr&1 == 0)超过(nr%2 == 0)来检查奇偶校验?

性能有任何实际差异吗?它更快吗?(假设我在同一个程序中的至少100个案例中使用它,它会在速度方面改进我的程序吗?)

bit-manipulation parity bitwise-and

6
推荐指数
1
解决办法
93
查看次数

x和(-x)在2的补语中的意义?

其中' - '表示负x,'&'表示按位AND.

这些数字在程序中是8位2的补码,我似乎无法找到输入和输出之间的相关性.

8  & (-8)  = 8
7  & (-7)  = 1
97 & (-97) = 1
Run Code Online (Sandbox Code Playgroud)

所以可能重要的是位操作?

0000 1000 & (1111 1000) = 0000 1000
0000 0111 & (1111 1001) = 0000 0001
0110 0001 & (1001 1111) = 0000 0001
Run Code Online (Sandbox Code Playgroud)

在上述每种情况下,高4位总是最终为0,但我找不到输入之间的相关性以及低4位最终的结果.

有任何想法吗?

解答: 找到最低设置位

bit-manipulation bit twos-complement bitwise-and

6
推荐指数
2
解决办法
1050
查看次数