Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB6按位并转换为c#作为布尔结果_C#_Vb6_Bit - Fatal编程技术网

VB6按位并转换为c#作为布尔结果

VB6按位并转换为c#作为布尔结果,c#,vb6,bit,C#,Vb6,Bit,如果我在VB6中有: GetBit = 414 And 2 ^ 0 GetBit将等于false,因为函数的返回类型为boolean。我不确定vb6是如何产生false的 如何将其转换为c# ^上面的c#代码返回true,其中longResult为2。我确实理解2是如何计算的,但我不确定vb6代码中如何/为什么返回false?更新:我完全忽略了C中的^是XOR而不是Pow(),非常尴尬。我决定留下我的答案,因为VB6解决方案仍然是正确的,并且因为有两个链接指向具有操作员先例的页面 原始帖子:经

如果我在VB6中有:

GetBit = 414 And 2 ^ 0
GetBit将等于false,因为函数的返回类型为boolean。我不确定vb6是如何产生false的

如何将其转换为c#


^上面的c#代码返回true,其中longResult为2。我确实理解2是如何计算的,但我不确定vb6代码中如何/为什么返回false?

更新:我完全忽略了C中的^是XOR而不是Pow(),非常尴尬。我决定留下我的答案,因为VB6解决方案仍然是正确的,并且因为有两个链接指向具有操作员先例的页面

原始帖子:经典运算符优先级问题;-)C#和VB6在这方面有所不同

在VB6中,位运算符的首选项低于算术运算符,请参见。结果是2^0的值为1,414和1的值为0

实现的解决方案是:

GetBit = (414 And 2) ^ 0

为了完整起见,您可以找到C#运算符的先例。事实证明,&只比^在C#中高一步。

更新:我完全忽略了^在C#中是XOR而不是Pow(),非常尴尬。我决定留下我的答案,因为VB6解决方案仍然是正确的,并且因为有两个链接指向具有操作员先例的页面

原始帖子:经典运算符优先级问题;-)C#和VB6在这方面有所不同

在VB6中,位运算符的首选项低于算术运算符,请参见。结果是2^0的值为1,414和1的值为0

实现的解决方案是:

GetBit = (414 And 2) ^ 0

为了完整起见,您可以找到C#运算符的先例。事实证明,&只比^在C#中高一步。

更新:我完全忽略了^在C#中是XOR而不是Pow(),非常尴尬。我决定留下我的答案,因为VB6解决方案仍然是正确的,并且因为有两个链接指向具有操作员先例的页面

原始帖子:经典运算符优先级问题;-)C#和VB6在这方面有所不同

在VB6中,位运算符的首选项低于算术运算符,请参见。结果是2^0的值为1,414和1的值为0

实现的解决方案是:

GetBit = (414 And 2) ^ 0

为了完整起见,您可以找到C#运算符的先例。事实证明,&只比^在C#中高一步。

更新:我完全忽略了^在C#中是XOR而不是Pow(),非常尴尬。我决定留下我的答案,因为VB6解决方案仍然是正确的,并且因为有两个链接指向具有操作员先例的页面

原始帖子:经典运算符优先级问题;-)C#和VB6在这方面有所不同

在VB6中,位运算符的首选项低于算术运算符,请参见。结果是2^0的值为1,414和1的值为0

实现的解决方案是:

GetBit = (414 And 2) ^ 0

为了完整起见,您可以找到C#运算符的先例。事实证明,&只比C#中的^高一步。

Basic中的^运算符是Math.Pow()。因此在VB6中,它的计算结果为414&Math.Pow(2,0)==0x19E&1=0==False。请注意,将整型文字提高到0的幂并不是很有用,结果总是1

在C#中,^运算符是异或运算符,而不是同一事物。只需使用1

更仔细的审查当然是必要的。这不是那种你想盲目音译的代码,很可能你只是在复制一个bug


所以真正的代码是:long result=firstParam&Math.Pow(2,secondParam)

不可以。请记住,VB6中的
Long
是一个32位整数,您需要C#中的
int
。你真的不想使用浮点数学。适当的转换是:

  int result = firstParam & (1 << secondParam);

int result=firstParam&(1Basic中的^运算符是Math.Pow()。因此在VB6中,它的计算结果为414&Math.Pow(2,0)==0x19E&1=0==False。请注意,将整数文本提高到0的幂次不是很有用,结果总是1

在C#中,^运算符是异或运算符,而不是相同的东西。只需使用1

更仔细的检查当然是必要的。这不是你想要盲目翻译的代码,很有可能你只是在复制一个bug


所以真正的代码是:long result=firstParam&Math.Pow(2,secondParam)

否。请记住,VB6中的
Long
是一个32位整数,您需要C#中的
int
。并且您确实不想使用浮点数学。正确的转换是:

  int result = firstParam & (1 << secondParam);

int result=firstParam&(1Basic中的^运算符是Math.Pow()。因此在VB6中,它的计算结果为414&Math.Pow(2,0)==0x19E&1=0==False。请注意,将整数文本提高到0的幂次不是很有用,结果总是1

在C#中,^运算符是异或运算符,而不是相同的东西。只需使用1

更仔细的检查当然是必要的。这不是你想要盲目翻译的代码,很有可能你只是在复制一个bug


所以真正的代码是:long result=firstParam&Math.Pow(2,secondParam)

否。请记住,VB6中的
Long
是一个32位整数,您需要C#中的
int
。并且您确实不想使用浮点数学。正确的转换是:

  int result = firstParam & (1 << secondParam);

int result=firstParam&(1Basic中的^运算符是Math.Pow()。因此在VB6中,它的计算结果为414&Math.Pow(2,0)==0x19E&1=0==False。请注意,将整数文本提高到0的幂次不是很有用,结果总是1

在C#中,^运算符是异或运算符,而不是相同的东西。只需使用1

更仔细的检查当然是必要的。这不是你想要盲目翻译的代码,很有可能你只是在复制一个bug


所以真正的代码是:long result=firstParam&Math.Pow(2,secondParam)