In der Informatik: Typkonvertierung negativer Zahlen (Übersicht)

In Computern werden negative Zahlen normalerweise in Zweierkomplementform gespeichert.

Nehmen wir als Beispiel eine 8-Bit-Binärdatei und nehmen wir an, wir möchten -1 darstellen. Zuerst schreiben wir die binäre Form von 1, also 00000001. Ermitteln Sie dann die Umkehrung dieser Zahl, d. h. invertieren Sie alle 0 und 1, um 11111110 zu erhalten. Fügen Sie dann 1 zu diesem inversen Code hinzu, um 11111111 zu erhalten, was die Komplementdarstellung von -1 im 8-Bit-Binärformat ist. Daher wird -1 im Computer im Allgemeinen nicht als 10000001, sondern als 11111111 (in 8-Bit-Binärform) gespeichert. Natürlich kann die spezifische Speichermethode je nach der Anzahl der Bits des Computers variieren. Beispielsweise ist in einem 16-Bit-, 32-Bit- oder 64-Bit-Computer die binäre Darstellung von -1 unterschiedlich. Aber egal um welche Art von Computer es sich handelt, die binäre Darstellung von -1 wird in Form eines Zweierkomplements vorliegen. Bei der Anzeige einer negativen Zahl wandelt der Computer den Komplementcode in den Originalcode um und zeigt ihn dann an. Wenn wir beispielsweise eine Binärzahl 11111111 (im 8-Bit-Binärformat) lesen, wissen wir, dass diese Zahl -1 ist.

1 ist also 0000 0001

        127 ist 0111 1111

        -1 für 1111 1111

       -2 ist 1111 1101

       -3 ist 1111 1100;

       -127 ist 1000 0001 (Einerkomplement minus Eins ist invertiert 1111 1111 ->1111 1111 (-127)

       -128 ist 1000 0000, minus eins ist 0111 1111 und die Umkehrung ist 1000 0000. Wenn es 2 hoch 7 ist, ist es 128. 

Ok, stellen Sie eine Frage

Tipp: 2 hoch 32 ist 4294967296, also 100000000 (32 Nullen)... 2 hoch 31 ist 2147483648 bis 100000...

-1u ist also 11111 (32 1s), also 4294967295 (eine Zahl kleiner als 2 hoch 32).

Im Folgenden ist die Beurteilungsfrage 1 wahr und 2 falsch

0==0u ist 1 (beachten Sie, dass u am Ende hinzugefügt wird, um die obligatorische Typkonvertierung anzuzeigen, und die beiden verglichenen Zahlen werden vor der Konvertierung in vorzeichenlose Typen konvertiert.)

-1<0 ist 1

-1<0u ist 0 -1 ist 111111111.....(Komplementcode sieht so aus) In eine vorzeichenlose Zahl umgewandelt, ist natürlich größer als 0

2147483647u>-2147483647-1 ist 0, 

Detaillierte Erklärung: Erstens ist der zweite Mechanismus von 2147483647 111111111....(31)

         Und -2147483647-1 ist -2147483647-1 ist -2147483648 ist 1000000000... wird eine vorzeichenlose Ganzzahl hoch 31 von 2, also 2147483648, also größer als 2147483647  

(unsigned)-1>-2 1 -1 ist 1111 1111 -2 ist 1111 1110 Korrekt nach der Konvertierung in unsigned

Wie -2147483647-1==2147483648u    

-2147483647-1 ist -2147483648, das heißt, 1 0000 (insgesamt 31 Nullen) wird in einen vorzeichenlosen Typ in 212147483648 konvertiert, also ist es korrekt.

Supongo que te gusta

Origin blog.csdn.net/qq_64200765/article/details/131921148
Recomendado
Clasificación