Question

Récemment, je confus par cette question. Peut-être parce que je ne l'ai pas lu les spécifications du langage (c'est ma faute, je sais).

norme C99 ne dit pas que la représentation des nombres négatifs doit être utilisé par le compilateur. J'ai toujours pensé que la seule bonne façon de nombres négatifs est le complément à deux (dans la plupart des cas).

Alors, voici ma question: savez-vous tout compilateur actuel qui implémente par défaut complément à un ou représentation signe grandeur? Peut-on changer la représentation par défaut avec un certain drapeau compilateur?

Quelle est la façon la plus simple de déterminer quelle représentation est utilisée?

Et qu'en C ++ standard?

Était-ce utile?

La solution

Je pense que ce n'est pas tellement une question de ce que la représentation du compilateur utilise, mais plutôt ce que la représentation de la machine sous-jacente utilise. Le compilateur serait très stupide de choisir une représentation non pris en charge par la machine cible, car cela introduirait des charges de frais généraux pour aucun avantage.

Certains champs de contrôle dans l'utilisation de la suite de protocole IP son complément, donc « accélérateur réseau » peut-être dédié CPU de type:. S mettre en œuvre

Autres conseils

Alors que complément à deux de représentation est de loin le plus fréquent, il est le seul ( voir ). Les C et C ++ comités de normalisation ne voulaient pas exiger des machines non-complément à deux pour émuler une représentation non-native. Par conséquent, ni C ++ C ne nécessite un format entier négatif spécifique.

Cela conduit à un comportement non défini des opérations sur les types signés au niveau du bit.

Le UNISYS 2200 série qui met en œuvre son calcul du complément, est toujours en utilisation. Vous pouvez en lire davantage dans les questions ci-dessous

architectures exotiques sur les prennent soin les comités de normalisation

Y at-il des implémentations non-complément à deux de C?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top