2010-03-04 4 views
1

Je lisais un tutoriel d'assemblage dans lequel on expliquait les entiers signés et les entiers non signés et la différence entre leur représentation dans la mémoire de l'ordinateur.Comment n'est pas représenté int/long représenté

Je me souviens de quelque chose comme ça il y avait un peu au début au numéro de sorte qu'il indique si l'entier est non signé ou signé.

Si quelqu'un le sait, veuillez répondre.

+0

http://en.wikipedia.org/wiki/Signed_number_representations – Tim

Répondre

2

le plus commun la page de Wikipédia sur Signed Number representation montre les implémentations de mémoire les plus courantes des deux valeurs entières signées et non signées.

Two's complement est la représentation la plus courante.

2

Il y a beaucoup de représentations possibles des nombres signés, est two's complement.

+0

Mais ... Ce n'est pas exactement ce que je voulais lire ... Comment sont-ils représentés dans la mémoire de l'ordinateur? Comment la machine (ou le compilateur) sait-elle que l'int est signé ou non signé? etc – VaioIsBorn

+1

La machine ne sait pas - c'est pourquoi vous devez dire au compilateur comment le traiter. En mémoire, il est simplement représenté comme un nombre spécifique de bits, ce qui peut être n'importe quoi ... –

+0

Cela est lié, car le complément à deux est assez compliqué pour permettre à de nombreuses opérations de fonctionner avec des données signées et non signées, par exemple l'addition. –

2

Le MSB ne détermine pas si le numéro est signé ou non; en chiffres signés, il représente si le nombre est négatif. Dans les nombres non signés c'est juste le MSB. C'est le programme qui détermine si un nombre est considéré comme signé ou non signé.

1

he il. question piège. Les entiers signés et non signés sont représentés exactement pareil. En regardant la mémoire, vous ne serez jamais capable de les distinguer. il ressort de l'un des principes de Von Neumann. Alors, où est la différence? La différence est dans la façon dont ils sont interprétés. Si la variable est signée, le compilateur utilise des commandes pour les ints signés. De plus, si nous savons que ce numéro est signé, le premier bit nous indique que c'est un signe. la conversion est faite comme ~i + 1 (c syntaxe) dans les deux sens

0

Il y a beaucoup de représentations possibles, chacune selon votre computer's organization. Les plus célèbres sont

Sur les deux représentations, vous pouvez tester le premier (le plus significatif) bit pour savoir si le nombre est positif (généralement désactivé) ou négatif (mordre). C'est-à-dire, si vous traitez le numéro signé. Si vous dites au compilateur de traiter ces nombres comme non signés, le bit de signe est utilisé comme donnée (qui double le maximum range pour le type de données).

Questions connexes