标签: bitwise-and

C++中的"Bitwise And"和Left-Padding

我有一个看起来像这样的宏:

Foo(x) ((x - '!') & 070)
Run Code Online (Sandbox Code Playgroud)

如果我调用以下代码:

Foo('1') => 16
Run Code Online (Sandbox Code Playgroud)

但是,如果我调用以下代码:

(('1' - '!') & 70) => 0
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,这里发生了什么?为什么x & 070计算到xx & 70计算到0?

我的猜测是左边的额外0是强制60取2个字节而不是1.在这种情况下,不会按位并且如下所示?

0000 0000 0001 0000     '16
0000 0000 0100 0110 &   '70
-------------------
0000 0000 0000 0000
Run Code Online (Sandbox Code Playgroud)

c++ ascii bitwise-and

5
推荐指数
2
解决办法
306
查看次数

仅来自OR和AND的XOR

如果只有AND和OR运算可用,那么如何进行XOR按位运算?

xor bitwise-operators bitwise-and

5
推荐指数
5
解决办法
2万
查看次数

在运算符"&"的java中按位AND

我刚刚阅读以下代码:

byte[] bts = {8, 0, 0, 0};
if ((bts[i] & 0x01) == 0x01)
Run Code Online (Sandbox Code Playgroud)

这是否与此相同

if (bts[i] == 0x01)
Run Code Online (Sandbox Code Playgroud)

如果没有,它们之间有什么区别?

在这里尝试做的第一种方式是什么?

java bitwise-operators bitwise-and

5
推荐指数
1
解决办法
396
查看次数

在 C 中屏蔽和提取位

我一直在看关于掩码的帖子,但仍然无法理解如何从 C 中的数字中提取某些位。

假设我们有一个int number 0001 1010 0100 1011,那么它的十六进制表示是否x1a4b正确?如果我想知道第 5 到第 7 个数字,101在这种情况下,我应该使用int mask= 0x0000 1110 0000 0000, int extract = mask&number?

另外我如何检查它是否是101?我想==不会在这里工作...非常感谢!

c mask bit-shift bitwise-operators bitwise-and

5
推荐指数
2
解决办法
3万
查看次数

我可以假设按位与运算是 O(1) 吗?如果是为什么?

我的处理器只能对 8 位或 16 位无符号整数进行算术运算。

1) 这意味着该处理器的字长是 16 位,对吗?

对单词的操作是 O(1)。

这样做的原因与处理器如何工作的实际电路级实现有关,对吗?

如果我将两个单词相加,结果是一个超过 16 位的数字,我可以说明以下内容吗?

1) 处理器可以添加数字,但只会报告 16 个最低有效数字。

2) 还要报告超过 16 位,处理器必须有软件,允许这些操作大数字(不适合一个字的数字)。

最后,

假设我有一个单词 w,它是一个 16 位数字,我想要八个最低有效数字。我可以做 w & 0xFF。这个操作的时间复杂度是多少?这是 O(1) 也是因为处理器的电路级实现吗?

algorithm big-o time-complexity bitwise-and

5
推荐指数
1
解决办法
2304
查看次数

bitwise&在此声明中的功能是什么?

我一直在阅读C#中的菱形平方算法的实现,它围绕创建无缝纹理.为了计算下一个点,采用以正方形或菱形排列的四个采样点的平均值.如果样本点位于纹理边缘,则将其缠绕到另一侧.此包装似乎使用以下方法完成:

public double sample(int x, int y)
{
    return values[(x & (width - 1)) + (y & (height - 1)) * width];
}
Run Code Online (Sandbox Code Playgroud)

一点点的研究告诉我这是一个有点操作员.我之前没有使用它们,维基百科的文章也没有启发.有人可以解释&操作员在这种方法中做了什么吗?

编辑:纹理尺寸总是2的幂

c# algorithm bitwise-operators bitwise-and

5
推荐指数
1
解决办法
90
查看次数

产生范围为(0,n)的k&x = k的解

如何有效地生成内部的所有数字0,1,2...n.
(大n).
这样对于固定x和变化k (0 <= k < n),k & x = k.
这是很容易发现,与值的所有位1k也是1x.
但我无法计算所有这些.
我曾经DP找到设置位的所有子集和x,以得出所有可能的解决方案.

但是这种方法证明在多个这样的情况下要求不同的效率低效x.

我是否必须考虑需要改变的每一点以获得所有可能性?还有其他有效的方法吗?另外,我当然不想与所有人一起检查n.

algorithm binary bit-manipulation bitwise-operators bitwise-and

5
推荐指数
1
解决办法
125
查看次数

MS访问中的按位操作

我有一张包含答案的表格.这个答案是一组数字的组合.(见下文)

可能的值

2 4 8 16 32 64

如果我有答案24的答案 - 我需要一些方法来计算出唯一可以选择的值是16和8.我被告知这是否在SQL中我将使用按位运算.

我在Access方面相当先进,但往往不使用VBA代码,但我对所有想法持开放态度.

ms-access vba bitwise-and

4
推荐指数
1
解决办法
2936
查看次数

按颜色OpenCV 2.x跟踪多个对象

目前我正在尝试按颜色跟踪多个对象.我基于文档代码.

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):

    # Take each frame
    _, frame = cap.read()

    # Convert BGR to HSV
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # define range of blue color in HSV
    lower_blue = np.array([110,50,50])
    upper_blue = np.array([130,255,255])

    # Threshold the HSV image to get only blue colors
    mask = cv2.inRange(hsv, lower_blue, upper_blue)

    # Bitwise-AND mask and original image
    res = cv2.bitwise_and(frame,frame, mask= mask)

    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k = cv2.waitKey(5) & 0xFF
    if k == 27: …
Run Code Online (Sandbox Code Playgroud)

python opencv hsv bitwise-and threshold

4
推荐指数
1
解决办法
7279
查看次数

按位操作-检查和删除

请注意下面的简单示例:

Module Module1
    <Flags>
    Public Enum Names
        None    = 0
        Test    = 1
        Test2   = 2
        Test3   = 4
        Test4   = 8
    End Enum

    Sub Main()
        Dim test As Names = Names.Test Or Names.Test3
        If (test And Names.Test3) = Names.Test3
            Console.WriteLine("TRUE")
        Else
            Console.WriteLine("FALSE")
        End If
    End Sub
End Module
Run Code Online (Sandbox Code Playgroud)

我的问题的第一部分与这条线有关If (test And Names.Test3) = Names.Test3

仅仅检查If test And Names.Test3该标志是否存在会更好吗?如果它的计算结果为非零值(意味着该标志存在),那么条件的结果仍然是True

是否有充分的理由使用第一种方法进行第二种检查?(虽然我的回答是针对VB.NET,但我也想知道这是否是其他地方(例如C#,C ++等)的潜在陷阱)。

此外,关于标记删除,似乎有两种方法可以执行此操作:

test = test Xor Names.Test3test = test And Not Names.Test3 …

vb.net bitwise-operators bitwise-and bitwise-xor

4
推荐指数
1
解决办法
1336
查看次数