nur eine Ergänzung zu Ericksons Antwort:
Wie er sagte, unterzeichnete ganze Zahlen als Zweierkomplement Ergänzungen zu ihren jeweiligen positiven Wert auf den meisten Computerarchitekturen gespeichert sind.
Das heißt, die gesamte 2^32 möglichen Werte werden in zwei Gruppen aufgeteilt: eine für positive Werte mit einem 0-Bit beginnend und eine für negative Werte mit einem Jetzt 1.
beginnen, sich vorstellen, dass wir sind auf 3-Bit-Nummern beschränkt. Lassen Sie uns sie in einer lustigen Art und Weise organisieren, die Sinn in einem zweiten machen werde:
000
111 001
110 010
101 011
100
Sie sehen, dass alle Zahlen auf der linken Seite beginnen mit einem 1-Bit, während auf der rechten Seite sie beginnen a 0. Durch unsere frühere Entscheidung, erstere als negativ und letztere als positiv zu erklären, sehen wir, dass 001, 010 und 011 die einzig möglichen positiven Zahlen sind, während 111, 110 und 101 ihre jeweiligen negativen Gegenstücke sind.
Nun, was machen wir mit den zwei Zahlen, die jeweils oben und unten sind? 000 sollte natürlich null sein, und 100 wird die niedrigste negative Zahl von allen sein, die kein positives Gegenstück haben. Fassen wir zusammen:
000 (0)
111 001 (-1/1)
110 010 (-2/2)
101 011 (-3/3)
100 (-4)
Sie können feststellen, dass Sie das Bitmuster von -1 zu bekommen (111) durch Negieren 1 (001) und die Zugabe von 1 (001), um es: 001 (= 1) -> 110 + 001 -> 111 (= -1)
auf Ihre Frage zurückzukommen:
0xFF000000 = 1111 1111 0000 0000 0000 0000 0000 0000
Wir müssen nicht fügen weitere Nullen vor da wir bereits das Maximum von 32 Bit erreicht haben. Außerdem ist es offensichtlich eine negative Zahl (wie es mit einem 1-Bit-Start), so dass wir jetzt ihrem absoluten Wert/positives Gegenstück gehen zu berechnen:
Das heißt, wir werden das Zweierkomplement nehmen von
1111 1111 0000 0000 0000 0000 0000 0000
die
0000 0000 1111 1111 1111 1111 1111 1111
Dann fügen wir
0000 0000 0000 0000 0000 0000 0000 0001
und erhalten
0000 0001 0000 0000 0000 0000 0000 0000 = 16777216
Daher 0xff000000 = -16777216.
@Kitsune (und/oder jemand, der das nicht bereits weiß): Dies ist eine gute Erklärung. Es könnte ein paar Mal dauern, es zu lesen, aber ich empfehle Ihnen, es zu lesen, bis es wirklich Sinn macht. –