2011-11-14 25 views

Trả lời

15

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); 
+0

hi Peer, bạn có thể cho tôi biết biểu thức tương đương của '(hash >>> 0)' trong C#? –

+1

Nếu loại băm của bạn là int. Nó là như nhau. – Peter

7

>> đ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.

3

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

0

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; 
     } 
Các vấn đề liên quan