2011-11-14 10 views

Odpowiedz

15

Trzeba rzucić pierwsze, nie istnieje jeden operator na >>>, przykładowy kod:

int x = -100; 
int y = (int)((uint)x >> 2); 
Console.WriteLine(y); 
+0

cześć Peer, czy możesz mi powiedzieć równoważne wyrażenie '(hash >>> 0)' w C#? –

+1

Jeśli typ twojego skrótu jest int. To jest to samo. – Peter

7

>> operator C# 's jest wrażliwy na podpisanym statusu operatora (int vs uint). Jeśli chcesz pracować na urządzeniu int, najpierw wykonaj rzutowanie na unit.

3

myślę, że to właśnie >> czy jest podpisany, czy nie, zależy od tego, czy jest to int/long lub uint/Ulong, więc trzeba by rzucić to konieczne

0

można użyć tej metody zamiast operatora >>>.

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; 
     }