Tôi đang cố gắng chuyển đổi một số mã Java thành C#. Làm thế nào có thể sau đây unsigned right shift operation được đại diện trong C#?Tương đương với C# của toán tử thay đổi bên phải của Java là gì >>>
int src1, src2, ans;
ans = src1 >>> src2;
Tôi đang cố gắng chuyển đổi một số mã Java thành C#. Làm thế nào có thể sau đây unsigned right shift operation được đại diện trong C#?Tương đương với C# của toán tử thay đổi bên phải của Java là gì >>>
int src1, src2, ans;
ans = src1 >>> src2;
Bạn phải cast đầu tiên, có không phải là một nhà điều hành cho >>>, mẫu mã:
int x = -100;
int y = (int)((uint)x >> 2);
Console.WriteLine(y);
>>
điều hành C# 's là nhạy cảm với tình trạng ký của nhà điều hành (int
vs uint
). Nếu bạn cần hoạt động trên int
, trước tiên hãy truyền tới unit
.
Tôi nghĩ rằng nó chỉ là >> cho dù nó được ký kết hay không phụ thuộc vào việc nó là một int/dài hoặc uint/ulong, do đó bạn sẽ phải bỏ khi cần thiết
bạn có thể sử dụng phương pháp này để thay thế điều hành >>>
.
int src1, src2, ans;
ans = rightMove(src1 , src2);
int rightMove(int value, int pos)
{
if (pos != 0)
{
int mask = 0x7fffffff;
value >>= 1;
value &= mask;
value >>= pos - 1;
}
return value;
}
hi Peer, bạn có thể cho tôi biết biểu thức tương đương của '(hash >>> 0)' trong C#? –
Nếu loại băm của bạn là int. Nó là như nhau. – Peter