3

可能的重复:
C# 中的 Java 三重移位运算符(>>> 和 <<<)的等效项?

Java 有运算符 >>> 和 <<< 与 >> 和 << 有点不同 - 任何人都可以在 C# 中给我它的等价物吗?

4

4 回答 4

7

最简单(或至少是最合乎逻辑的)等价物实际上是对等价的无符号类型进行未经检查的强制转换,然后是正常移位,然后可能再次强制转换:

// To perform int result = x >>> 5;
int x = -10;

uint u = unchecked ((uint) x);
u = u >> 5;

int result = unchecked ((int) u);

(当然,未选中的部分仅在您处于选中的上下文中时才相关。)

以我的经验,当您通常>>>在 Java 中使用时,您只需在 C# 中使用无符号类型即可。

于 2011-07-25T12:31:52.803 回答
2

没有 c# 等效项,如果您在左侧使用无符号值,在 c# 中将执行与java>>中相同的功能。>>>

因此,您需要强制转换以获得所需的效果。

于 2011-07-25T12:31:08.387 回答
2

Java 有>>>(我认为有一个<<<运算符),它是 c# 中不存在的无符号右移运算符。它存在于 java 中,因为 java 没有无符号数据类型。在 c# 中,只需使用带>>运算符的无符号类型。

于 2011-07-25T12:31:20.010 回答
2

>>>是 Java 中的无符号移位操作。

它们在 C# 中没有等价物,因为 C# 支持无符号整数,因此您可以对它们进行转换。

于 2011-07-25T12:31:51.107 回答