Wie kann ich feststellen, ob der Hexadezimalwert negativ ist?

8

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?

    
aurelienC 10.11.2015, 11:55
quelle

3 Antworten

11

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:

  1. invertiere alle Bits
  2. addiere 1

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.

    
Dan Byström 10.11.2015, 12:00
quelle
3

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

    
Steven 08.06.2017 20:48
quelle
2

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.

    
Rahul Tripathi 10.11.2015 12:02
quelle

Tags und Links