327 votes

valeur maximale de l'entier

En C, le nombre entier (pour la machine 32 bits) est 32 bits et va de -32768 à +32767. En Java, le nombre entier est également 32 bits mais la plage est comprise entre -2 147 483 648 et 2 147 483 647

Je ne comprends pas en quoi la plage est différente en Java, même si le nombre de bits est le même. Quelqu'un peut m'expliquer?

433voto

GaborSch Points 6587

En C, le langage lui-même ne permet pas de déterminer la représentation de certains types de données. Il peut varier d'une machine à l'autre, sur des systèmes embarqués de l' int peut être de 16 bits de large, bien que généralement il est de 32 bits.

La seule exigence est que l' short int <= int <= long int par la taille. Aussi, il y a une recommandation qui int devrait représenter le natif de la capacité du processeur.

Il y a une règle que tous les types sont signés. L' unsigned modificateur utilise le même nombre de bits, mais calcule les nombres positifs seulement.

En Java, le langage lui-même détermine la façon dont certains types sont représentés.

La commande est: byte 8 bits, short 16 bits, int 32 bits, long 64 bits.

En Java, tous les types sont signés, il n'y a pas non signé versions. Cependant, peu de manipulations traiter les nombres comme ils ont été signés (c'est de la manipulation de tous les bits correctement).

79voto

Kos Points 29125

En C, le nombre entier (pour la machine 32 bits) est 32 bits et va de -32768 à +32767.

Faux. Le nombre entier signé 32 bits dans la représentation du complément à 2 est compris entre -2 31 et 2 31 -1, ce qui correspond à -2 147 483 648 à 2 147 483 647.

23voto

Ivaylo Strandjev Points 38924

Un entier de 32 bits est compris entre -2 147 483 648 et 2 147 483 647. Cependant, le fait que vous soyez sur une machine 32 bits ne signifie pas que votre compilateur C utilise des entiers 32 bits.

16voto

John Bode Points 33046

Le langage C définition précise minimum varie pour les différents types de données. Pour int, cette distance minimale est de -32767 à 32767, int doit être d'au moins 16 bits de large. Une implémentation est libre de fournir une vaste int type avec un plus large éventail. Par exemple, sur le SLES 10 serveur de développement, je travaille sur, la gamme est -2147483647 à 2137483647.

Il y a encore certains systèmes qui utilisent des 16-bits int types (Tous Le Monde n'Est Pas UN VAX x86), mais il y en a beaucoup qui utilisent 32 bits int types, et peut-être quelques-uns qui utilisent 64 bits.

Le langage C a été conçu pour s'exécuter sur différentes architectures. Java a été conçu pour fonctionner dans une machine virtuelle qui se cache ces différences architecturales.

7voto

BlueLettuce16 Points 386

En effet, en C - entier sur une machine 32 bits, cela ne signifie pas que 32 bits sont utilisés pour le stocker, il peut également s'agir de 16 bits. Cela dépend de la machine (dépendant de l'implémentation).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X