2010-05-28 7 views

Répondre

16

La plupart des ordinateurs utilisent actuellement two's complement pour les entiers signés, mais il peut varier selon l'architecture matérielle, le langage de programmation ou d'autres problèmes spécifiques à la plate-forme. Pour une représentation à complément de deux, le bit le plus significatif ("le plus à gauche") est appelé bit de signe, et il sera défini pour un entier négatif et effacé pour un entier non négatif. Cependant, c'est plus qu'un simple "drapeau". Voir le Wikipedia article pour plus d'informations.

+0

Donc le bit de front sera 1 pour négatif et 0 pour positif? Qu'en est-il de 0? – User

+0

Zéro est représenté par tous les bits étant zéro. –

4

Généralement, il s'agit d'un complément à deux.

1
0xFFFFFFFF = -1 
0xFFFFFFFE = -2 
0xFFFFFFFD = -3 
... 

& ainsi de suite

0

Le bit le plus significatif (dernier bit à gauche) est définie pour les nombres négatifs.

+1

Voulez-vous dire "premier bit sur la gauche"? –

+0

Que diriez-vous de "premier bit de la gauche" ou "dernier bit de la droite". :) –

3

de la norme C99:

Pour les types d'entiers signés, les bits de la représentation de l'objet doit être divisés en trois groupes: les bits de valeur, bits de remplissage, et le bit de signe. n'a pas besoin d'être des bits de remplissage; il doit être exactement un bit de signe. Chaque bit qui est un bit de valeur a le même valeur que le même bit dans la représentation de l'objet du correspondant de type non signé (le cas échéant sont des bits de valeur M dans le type signé et N dans le type non signé, puis M = N). Si le bit de signe est zéro, il ne doit pas affecter la valeur résultante. Si le bit de signe est une, la valeur doit être modifiée dans l'une des façons suivantes:

- la valeur correspondante avec le signe bit 0 est réduit à néant (signe et d'amplitude);

- le bit de signe a la valeur - (2N) (complément à deux);

- le bit de signe a la valeur - (2N - 1) (complément des uns).

Lequel de ces applique est définie par l'implémentation, ce qui est de savoir si la valeur de bit de signe 1 et tous les bits de valeur zéro (pour les deux premiers), ou avec bit de signe et les bits de valeur 1 (pour celui des uns), est une représentation trap ou une valeur normale. En le cas du signe et de la magnitude et un complément, si cette représentation est une valeur normale, il est appelé un zéro négatif.

0

Je pense que la réponse est 0110, précédée par 1 répété 28 fois, donc il ressemble à:

1111 1111 1111 1111 1111 1111 1111 0110;

Étapes:

  1. représentation de bits pour 10 est:

    0000 0000 0000 0000 0000 0000 0000 1010;

  2. 0->1 et 1->0 pour tous les bits:

    1111 1111 1111 1111 1111 1111 1111 0101;

  3. ajouter 1 au dernier bit, et se propagent à peu en avance, fait!

    1111 1111 1111 1111 1111 1111 1111 0110;

===

Vous pouvez vérifier en ajoutant avec 10, et vous obtiendrez 0 pour tous les bits. Comme mentionné ci-dessus, il est basé sur 2 et suit le complément de deux.