je ne pouvais pas comprendre ce code dans C#opérateur << en C#
int i=4
int[] s =new int [1<<i];
Console.WriteLine(s.length);
le ouput est 16 Je ne sais pas pourquoi la sortie comme ça?
je ne pouvais pas comprendre ce code dans C#opérateur << en C#
int i=4
int[] s =new int [1<<i];
Console.WriteLine(s.length);
le ouput est 16 Je ne sais pas pourquoi la sortie comme ça?
< < est l'opérateur de décalage vers la gauche
x << y
moyen de décalage x vers la gauche par y bits.
3 est 0011, 3 < < 1 est 0110 qui 6.
Il est généralement utilisé pour multiplier par 2 (décalage vers la gauche multiplie par 2)
Je suppose que vous voulez dire dans i
place de r
...
<<n
signifie "décalage gauche de n * bits". Puisque vous commencez avec 1 = binaire 00 ... 00001, si vous changez de gauche 4 fois vous obtenez binaire 00 ... 10000 = 16 (cela aide si vous êtes familier avec l'arithmétique binaire - sinon "calc.exe" a un convertisseur binaire).
Chaque bit se déplace à gauche n
endroits, en remplissant (sur la droite) avec 0s. * = Notez que n
est réellement "mod 32" pour int
, donc (comme un cas de coin) 1 < < 33 = 2, pas 0 que vous pourriez vous attendre.
Il y a aussi >>
(décalage à droite), qui se déplace à droite, le remplissage avec 0
pour uint
s et s + ve int
, et 1
pour -ve int
s.
Comme déjà mentionné, < < est l'opérateur de décalage de gauche. Dans votre exemple particulier, la taille du tableau est définie comme une puissance de 2. La valeur 1 décalée vers la gauche d'un nombre va être 1, 2, 4, 8, 16, ...
De la documentation
Si premier opérande est un int ou uint (quantité 32 bits), le nombre de décalage est donnée par la d'ordre inférieur de cinq bits second opérande.
Si le premier opérande est une longue ou ULONG (quantité 64 bits), le nombre de décalage est donnée par la d'ordre inférieur six bits de second opérande.
Notez que je < < 1 et i < < 33 donnent le même résultat , parce que 1 et 33 ont les mêmes faible ordre cinq bits.
Ce sera le même que 2^(la valeur réelle des 5 bits inférieurs).Donc, dans votre cas, ce serait 2^4 = 16.
wft à la baisse? –