将 VBA 按位运算符转换为 C#

Convert VBA bitwise operator to C#

我在 VBA 中有一个按位运算,现在我想将其转换为 C#。

我尝试使用 C# 按位运算符进行转换,但没有得到结果。

VBA 位运算

Bit1 = (Var1 And 2 ^ 14) Or (Var1 And 2 ^ 15)

C# 按位运算

var Bit1 = (bitvalue >> 14) | (bitvalue >> 15);

由于 VBA 没有位移运算符,我们使用 2^places 进行右移,在 C# 中,我们可以简单地使用 >> 进行右移运算符,但它没有给出我的结果在 VBA 中获取它。可能是什么原因?

这是我的完整 C# 函数,它与 VBA:

中的类似
public void bitcalc()
{


    var Bit1 = (bitvalue >> 14) | (bitvalue >> 15);
    if (Bit1 == 16384) getISO15031BitsLetter = "C";

    else if (Bit1 == 32768) getISO15031BitsLetter = "B";


    else if (Bit1 == 49152) getISO15031BitsLetter = "U";


    else getISO15031BitsLetter = "P" ;


}

您的原始代码没有移位输入。它只是掩盖它。直接翻译可以是:

var Bit1 = (Var1 & (1 << 14)) | (Var1 & (1 << 15));

对此有多种变体。例如,您可以同时屏蔽两个位:

var Bit1 = (Var1 & (3 << 14)); // decimal 3 is binary 11