标签: bitwise-or

如何反转按位OR运算?

这就是我所做的:

93 | 199
Run Code Online (Sandbox Code Playgroud)

返回

223
Run Code Online (Sandbox Code Playgroud)

我理解,这是因为0b1011101 | 0b110001110b11011111

但是,假设我想进行反向操作.如何0b10111010b11000111和之间的按位操作中获得0b11011111

python bit-manipulation bitwise-operators bitwise-or

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

为什么C/C++按位XOR运算符关心符号?

一段时间以来,我一直在努力处理一些低级别的消息,结果证明校验和计算存在问题.我认为按位XOR运算符不关心符号,所以我使用a QByteArray来存储字节,并使用at返回a 的方法char来计算校验和.这些消息有时被正确承认,但并非总是如此.

看起来另一端的人uint8_t用来存储字节,并且校验和在某些情况下失败了.我通过铸造char来解决它uint8_t,但我对此感到困惑.

为什么按位XOR运算符关心符号?不管他们代表什么,我认为它在某种程度上有效.这是我用来试图理解它的一段代码.

#include <stdio.h>
#include <stdint.h>
#include <iostream>
#include <bitset>

int main ()
{    
    uint8_t a = 0b10010101;
    char b    = 0b10010101;

    uint32_t checksum;

    checksum = 55;
    checksum ^= a;
    std::cout << std::bitset<32>(checksum) << std::endl;

    checksum = 55;
    checksum ^= b;
    std::cout << std::bitset<32>(checksum) << std::endl;    
}
Run Code Online (Sandbox Code Playgroud)

即使两个整数都保持相同的位,操作在每种情况下产生不同的结果.

c++ bit-manipulation bitwise-operators bitwise-or

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

如何测试 PHP 按位函数输入参数

有时在编程中,它们允许将参数链接到单个函数输入变量中,例如下面的第二个输入变量:

define('FLAGA',40);
define('FLAGB',10);
define('FLAGC',3);
function foo($sFile, $vFlags) {
  // do something
}
foo('test.txt',FLAGA | FLAGB | FLAGC);
Run Code Online (Sandbox Code Playgroud)

PHP 将此单个管道字符(|)称为按位OR运算符。我现在如何在里面添加一些东西foo()来测试$vFlags以查看设置了哪些标志?

php bit-manipulation bitwise-operators input-parameters bitwise-or

3
推荐指数
1
解决办法
1000
查看次数

按位OR作为自定义属性中的输入参数

如何在我的自定义FeatureAuthorize属性中使用按位OR运算传递多个参数,同样AttributeUsage支持AttributeTarget方法或类.

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
Run Code Online (Sandbox Code Playgroud)

以下是我想要实现的示例,提供的任何功能,无论是发送钱还是收款方法都应该是可访问的.

[FeatureAuthorize(Feature = EnumFeature.SendMoney | EnumFeature.ReceiveMoney)]
public ActionResult SendOrReceiveMoney(int? id, EnumBankAccountType? type)
{
 // My code
}
Run Code Online (Sandbox Code Playgroud)

FeatureAuthorize属性的主体就像.

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class FeatureAuthorizeAttribute : AuthorizeAttribute
{
    public EnumFeature Feature { get; set; }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (!IsFeatureAllowed(Feature)) // Verification in database.
        {
             // Redirection to not authorize page.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c# asp.net-mvc bitwise-or

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

这个C#Bitwise-OR的结果是什么?

我试图在c#中检查SharePoint用户的权限,我遇到了以下似乎有效的代码:

isGranted = spweb.DoesUserHavePermissions(userlogin, SPBasePermissions.EmptyMask | SPBasePermissions.ViewPages);
Run Code Online (Sandbox Code Playgroud)

第一个参数是用户检查权限.第二个参数是检查用户是否拥有的权限.

我的问题是,bitmask或在emptymask和viewpages权限之间的结果是什么?这实际上是在检查什么权限?

c# enums sharepoint-2010 bitwise-or

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

'|' vs'||' C#中的编译器优化

我最近在一次采访中被问到这个问题,我完全错了,但让我对C#和.net中的编译器优化感到好奇

请考虑以下代码段:

void Main()
{
    Console.WriteLine("Results when bitwise or is used: ");
    Console.WriteLine(FuncA() | FuncB());

    Console.WriteLine("Results when or operator is used: ");
    Console.WriteLine(FuncA() || FuncB()); 
}

bool FuncA()
{
    Console.WriteLine("Function A is executing.");
    return true;
}

bool FuncB()
{
    Console.WriteLine("Function B is executing.");
    return false;
}
Run Code Online (Sandbox Code Playgroud)

运行上面的结果会得到以下结果:

按位或使用时的结果:

功能A正在执行.

功能B正在执行.

真正

使用或运算符时的结果:

功能A正在执行.

真正

我的问题是为什么在使用按位运算符时编译器没有优化?就像C#或运算符一样,编译器已经知道了这些参数,那么为什么它不会以相同的方式处理它呢?

.net c# compiler-construction optimization bitwise-or

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

按位或来定义 SqlBulkCopyOptions?

因此,我向一位高级开发人员寻求帮助,以解决与事务范围相关的问题,他来到我的办公桌前,在 SqlBulkCopy 上使用了不同的重载,对于 SqlBulkCopyOptions 参数,他做了如下所示的操作:

SqlBulkCopyOptions options = (SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints);
Run Code Online (Sandbox Code Playgroud)

它现在有效,但我不明白bitwise or这里的意思。我以为我对它有一些了解,从来没有真正使用过它,但是这个用法让我摸不着头脑。是的,我没有要求我的前辈向我解释它。我希望有人能帮助我理解该声明的含义。网上的大多数按位或示例都带有一些数字,我得到了(我认为),但是这个?

c# sqlbulkcopy bitwise-or

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

所有对按位或总和

是否有一种算法可以在线性时间复杂度中找到按位或和或数组?

假设如果数组是 {1,2,3},那么所有对和 id 1|2 + 2|3 + 1|3 = 9。

我可以使用以下算法在 O(n) 中找到所有对 AND 总和......我如何更改它以获得所有对 OR 总和。

int ans = 0;  // Initialize result

// Traverse over all bits
for (int i = 0; i < 32; i++)
{
    // Count number of elements with i'th bit set
    int k = 0;  // Initialize the count
    for (int j = 0; j < n; j++)
        if ( (arr[j] & (1 << i)) )
            k++;

    // There are k set …
Run Code Online (Sandbox Code Playgroud)

bit-manipulation bit bitwise-or

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

将char设置为所有真实位

我试图将char中的所有位设置为true.

char foo = 00000000;
foo |= 11111111;
for (int i = 0; i < 8; i++) { //prints out bitwise
    printf("%d", !!((foo << i) & 0x80));
}
Run Code Online (Sandbox Code Playgroud)

当foo全为0时,我得到11000111.当foo == 00000110时,它打印11001111; 这里出了什么问题?

c bit-manipulation bitwise-or

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

char* 上的按位运算

GCC 在编译下面的代码时出错。注释的两行而不是其他移位线有效,但我不确定铸造是否必要且真实。

错误是这样的:二进制操作数无效| (有“char*”和“int”)

谢谢。

void bits2byte(int *bits, char *byte) {
    byte = 0;
    int i;
    for (i = 0; i<8; i++) {
        if (bits[i] == 1) {
            byte = byte | 0x01;
            // byte = (char*)((int)byte | 0x01);
        }
        if (i<7) {
            byte = byte << 0x01;
            // byte = (char*)((int)byte << 0x01);
        }
    }
}
int main() {
    int input_bits[] = {1, 1, 0, 1, 0, 0, 1, 1};
    char output_byte;
    bits2byte(input_bits, &output_byte); …
Run Code Online (Sandbox Code Playgroud)

c bit-shift pass-by-reference bitwise-operators bitwise-or

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