2017-05-28 1 views
-1

J'ai essayé d'effectuer une opération de décalage à gauche pour (2 << 31) mais le résultat obtenu est 0. Je veux savoir pourquoi il en résulte 0 et quelle sera la gamme maximale de n en (2 << n)?La plage maximale de l'opération de décalage gauche

+4

vous devez y ajouter plus d'informations: quelles langues utilisez-vous et quel type de données utilisez-vous. – jsbueno

Répondre

0

2 est 10 en binaire et il est stocké sous la forme 00000000000000000000000000000010 dans une donnée 32 bits. Vous essayez de déplacer ce 10 vers la gauche de 31. Comme 10 occupe déjà 2 places, il sautera 31 moins 2 0s vers la gauche. Quand il atteint le 32ème 0, le '0' du 10 sera stocké à la 32ème place et le '1' sera perdu car il n'y a pas de place après 32. Donc le résultat sera 0000000000000000000000000000000 qui est 0.