¿Cuál es el equivalente (en C#) del operador de Java >>>
?Equivalente del operador de triple desplazamiento de Java (>>>) en C#?
(Solo para aclarar, no me refiero a los >>
y <<
operadores.)
¿Cuál es el equivalente (en C#) del operador de Java >>>
?Equivalente del operador de triple desplazamiento de Java (>>>) en C#?
(Solo para aclarar, no me refiero a los >>
y <<
operadores.)
En C#, puede utilizar los tipos de enteros sin signo, y luego el <<
y >>
hacer lo que usted espera. El MSDN documentation on shift operators le da los detalles.
Dado que Java no admite enteros sin signo (aparte de char
), este operador adicional se hizo necesario.
Gracias por la entrada – Nikolaos
Java no tiene un desplazamiento a la izquierda sin signo (<<<
), pero de cualquier manera, puede simplemente convertir a uint
y shfit desde allí.
E.g.
(int)((uint)foo >> 2); // temporarily cast to uint, shift, then cast back to int
Al leer esto, espero que mi conclusión de uso de la siguiente manera sea correcta. De lo contrario, las ideas se agradecieron.
Java
i >>>= 1;
C#:
i = (int)((uint)i >> 1);
n >>> s en Java es equivalente a TripleShift (n, s) donde:
private static long TripleShift(long n, int s)
{
if (n >= 0)
return n >> s;
return (n >> s) + (2 << ~s);
}
'(2 << ~ s)' no funcionará ... – Lucero
funciona para vb.net especialmente –
Por mi VB .Net personas
Las respuestas sugeridas anteriormente darán desbordar excepciones con Option Strict ON
Prueba esto, por ejemplo, -100 >>> 2
con soluciones anteriores:
El código siguiente funciona siempre para >>>
Function RShift3(ByVal a As Long, ByVal n As Integer) As Long
If a >= 0 Then
Return a >> n
Else
Return (a >> n) + (2 << (Not n))
End If
End Function
@Sebastien Lebreton no había visto su solución antes de publicar este –
No hay >>> operador en C#. Pero puede convertir su valor como int, long, Int16, Int32, Int64 en unsigned uint, ulong, UInt16, UInt32, UInt64 etc.
Aquí está el ejemplo.
private long getUnsignedRightShift(long value,int s)
{
return (long)((ulong)value >> s);
}
No hay operador <<< en Java, solo un >>> operador. – Jesper