Juste un ajout à la réponse de erickson:
Comme il le dit, signé entiers sont stockés sous forme de deux compléments de leur valeur de à base positif sur la plupart des architectures informatiques.
C'est, l'ensemble 2^32 valeurs possibles sont divisées en deux groupes: l'un pour les valeurs positives commençant par 0 bits et une pour les valeurs négatives commençant par un 1.
Maintenant, imaginez que nous sont limités à des nombres de 3 bits. Nous allons les organiser de façon amusante qui va faire sens dans une seconde:
000
111 001
110 010
101 011
100
Vous voyez commençant par 1 bit tous les chiffres sur le côté gauche tandis que sur la droite, ils commencent par Par notre décision antérieure de déclarer le premier comme négatif et le dernier comme positif, nous voyons que 001, 010 et 011 sont les seuls nombres positifs possibles tandis que 111, 110 et 101 sont leurs homologues négatifs respectifs.
Maintenant, que faisons-nous avec les deux nombres qui sont en haut et en bas, respectivement? 000 devrait être zéro, évidemment, et 100 sera le nombre négatif le plus bas de tous ce qui n'a pas de contrepartie positive. Pour résumer:
000 (0)
111 001 (-1/1)
110 010 (-2/2)
101 011 (-3/3)
100 (-4)
Vous remarquerez que vous pouvez obtenir le modèle binaire de -1 (111) en niant 1 (001) et en ajoutant 1 (001) à elle: 001 (= 1) -> 110 + 001 -> 111 (= -1)
pour revenir à votre question:
0xFF000000 = 0000 0000 1111 1111 0000 0000 0000 0000
Nous ne devons pas ajouter d'autres zéros devant comme nous avons déjà atteint le maximum de 32 bits. En outre, il est de toute évidence un nombre négatif (comme il commence avec un 1-bit), donc nous allons maintenant calculer sa valeur absolue/contrepartie positive:
Cela signifie, nous allons prendre le complément de
de deux
1111 1111 0000 0000 0000 0000 0000 0000
qui est
0000 0000 1111 1111 1111 1111 1111 1111
Ensuite, nous ajoutons
0000 0000 0000 0000 0000 0000 0000 0001
et obtenir
0000 0001 0000 0000 0000 0000 0000 0000 = 16777216
Par conséquent, 0xff000000 = -16777216.
@Kitsune (et/ou toute personne qui ne le sait pas déjà): Ceci est une bonne explication. Cela peut prendre quelques fois pour le lire, mais je vous recommande de le lire jusqu'à ce qu'il soit vraiment logique. –