Java a l'opérateur >>> et <<< qui sont un peu différent - aide s'il vous plaît [double]
-
25-10-2019 - |
Question
Possible en double: équivalent de Java opérateurs de décalage triple (>>> et <<< ) en C #?
Java a l'opérateur >>> et <<< qui sont un autre bit puis >> et << - quelqu'un peut me donner son équivalent en C #
La solution
Le plus simple (ou au moins la plus logique) est équivalent efficacement une distribution non contrôlée à l'équivalent type non signé, suivie d'un quart de travail normal, puis éventuellement une fonte à nouveau:
// To perform int result = x >>> 5;
int x = -10;
uint u = unchecked ((uint) x);
u = u >> 5;
int result = unchecked ((int) u);
(La partie non contrôlée est pertinent que si vous êtes par ailleurs dans un contexte contrôlé, bien sûr.)
Dans mon expérience, les temps où vous normalement à utiliser >>>
en Java, vous devriez simplement utiliser les types non signés pour commencer en C #.
Autres conseils
Il n'y a pas c # équivalent, si vous utilisez une valeur non signée sur la gauche, >>
en C # effectuera la même fonction que >>>
en java.
Vous devez donc CAST pour obtenir l'effet désiré.
Java a >>>
(Je ne pense qu'il ya un opérateur <<<
) qui est l'opérateur de décalage droit non signé qui ne figure pas dans c #. Il est là en Java java n'a pas non signé des types de données. En c # il suffit d'utiliser un type non signé avec l'opérateur >>
.
>>>
est une des opérations de décalage non signé en Java.
Ils n'ont un équivalent en C # parce que C # prend en charge des entiers non signés et vous pouvez donc simplement passer sur ceux-ci.