Ich habe gerade gelernt, hexadezimale Werte zu lesen, bis jetzt habe ich sie nur als positive Zahlen gelesen. Ich habe gehört, dass Sie auch negative Hex-Werte schreiben könnten.
Mein Problem ist, dass Ich kann nicht sagen, ob ein Wert negativ oder positiv ist .
Ich habe hier und da ein paar Erklärungen gefunden, aber wenn ich versuche, sie zu überprüfen, indem ich die Hex-zu-Dezimal-Konverter von Online benutze, geben sie mir immer unterschiedliche Ergebnisse.
Quellen, die ich gefunden habe:
Ссылка
Ссылка
Wenn ich es richtig verstehe, bedeutet das:
Wenn ein hexadezimaler Wert mit all seinen Bits etwas & gt; 7 als erste hexadezimale Zahl, ist es negativ.
Alle 'F' am Anfang oder die erste Ziffer bedeutet nur, dass der Wert negativ ist, wird nicht berechnet
Zum Beispiel, wenn der Hex-Wert in 32Bits geschrieben wird:
FFFFF63C = & gt; negativ (-2500?)
844fc0bb = & gt; negativ (-196099909?)
F44fc0bb = & gt; negativ (-196099909?)
FFFFFFFF = & gt; negativ (-1?)
7FFFFFFF = & gt; positiv
Habe ich Recht, wenn ich nicht bin, könntest du mir sagen, was ich nicht richtig verstehe?
Lesen Sie die Zweierkomplement-Darstellung: Ссылка
Ich denke, dass der einfachste Weg, zu verstehen, wie negative Zahlen (normalerweise) behandelt werden, ist, eine kleine Binärzahl aufzuschreiben und dann herauszufinden, wie man die Subtraktion um eins durchführt. Wenn Sie 0 erreichen und diese Methode noch einmal anwenden, werden Sie sehen, dass Sie plötzlich alle 1en erhalten. Und so wird "-1" (normalerweise) dargestellt: alle Einsen in binärer oder alle f in Hexadezimalzahlen. Wenn Sie mit vorzeichenbehafteten Nummern arbeiten, werden sie normalerweise durch das erste (höchstwertige) Bit dargestellt, das eins ist. Das heißt, wenn Sie mit einer Anzahl von Bits arbeiten, die ein Vielfaches von vier ist, dann ist eine Zahl negativ, wenn die erste hexadezimale Zahl 8,9, A, B, C, D, E oder F ist.
Die Methode zur Negation ist:
Ein weiterer Vorteil dieser Darstellung (Zweierkomplement) besteht darin, dass Sie nur eine Darstellung für Null erhalten, was nicht der Fall wäre, wenn Sie vorzeichenbehaftete Zahlen durch Setzen des MSB markieren oder einfach invertieren.
Nach dem, was ich verstehe, müssen Sie immer auf die äußerste linke Ziffer schauen, um das Zeichen zu sagen. Wenn in hex, dann ist alles von 0-7 positiv und 8-f ist negativ. Alternativ können Sie von hex in binär konvertieren, und wenn es eine 1 in der linken Ziffer gibt, dann ist die Zahl negativ.
HEX & lt; - & gt; BINARY & lt; - & gt; ZEICHEN
0-7 & lt; - & gt; 0000-0111 & lt; - & gt; posieren
8-F & lt; - & gt; 1000-1111 & lt; - & gt; neg
Die Antwort hier im Forum sieht gut aus:
Jede hexadezimale "Ziffer" hat 4 Bits. Das d in der oberen Position ist 1101. Sie sehen also, es hat ein hohes Stück von einem, also das Ganze Nummer ist negativ.
und
Eine Hexadezimalzahl ist immer positiv (es sei denn, Sie geben ausdrücklich ein Minuszeichen an) Zeichen davor). Es könnte als negative Zahl interpretiert werden sobald Sie es in einem bestimmten Datentyp speichern. Nur dann am meisten signifikantes Bit (MSB) wichtig, aber es ist das MSB der Nummer "as gespeichert in diesem Datentyp ". Insofern sind die obigen Antworten nur teilweise korrekt: nur im Kontext eines tatsächlichen Datentyps (wie ein int oder lang) spielt das MSB eine Rolle.
Wenn Sie "0xdcafe" in einem int speichern, wäre die Repräsentation davon "0000 0000 0000 1101 1100 1010 1111 1110" - das MSB ist 0. Während der Darstellung von "0xdeadcafe" ist "1101 1110 1010 1101 1100 1010 1111 1110 "- das MSB ist 1.
Tags und Links hex