Was bedeuten Zahlen mit 0x-Notation?


107

Was bedeutet ein 0xPräfix auf einer Zahl?

const int shared_segment_size = 0x6400;

Es ist aus einem C-Programm. Ich kann mich nicht erinnern, was es xbedeutet und was der Brief besonders bedeutet.


2
Suche nach "hexadezimaler Notation"
asawyer

2
@asawyer Danke. Bevor ich "0x" als hexadezimal aufnahm, hatte ich keine Ahnung, wo ich suchen sollte.
Terry Li

3
Die Suche nach 0x prefix C++bringt Sie jetzt hierher :)
Carl Smith

Antworten:


111

Literale, die mit beginnen, 0xsind hexadezimale Ganzzahlen. (Basis 16)

Die Nummer 0x6400ist 25600.

6 * 16^3 + 4 * 16^2 = 25600

Für ein Beispiel mit Buchstaben (auch in hexadezimaler Notation verwendet, wobei A = 10, B = 11 ... F = 15)

Die Nummer 0x6BF0ist 27632.

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632

2
Was ich mich gefragt habe, wie sollen negative Zahlen hexadezimal bezeichnet werden? Wie -0xff oder 0x-ff? Ich denke das erste, aber ich weiß es nicht.
Luc

7
@ Luc Der erste ist richtig. Obwohl ich öfter gerecht 0xffffffffund so sehe . ( 0xffffffff = -1für 32-Bit-Int unter der Annahme von 2er-Komplement)
Mysticial

@ Luc Negative Zahlen werden binär mit dem Zweierkomplement dargestellt - eine clevere Methode, für die kein '-' Zeichen erforderlich ist. Es wird also im Grunde genommen von binär in hexadezimal, negativ oder positiv konvertiert.
Shuvo Sarker

@ShuvoSarker Danke für den Zusatz! Das ist aber nur die Speicherdarstellung, ich denke ähnlich, wenn wir uns einig wären, dass wir eine Reihe von Zahlen von 0 bis 1999 haben und dass 1000 bis 1999 die negativen Zahlen darstellen würden. Meine Frage betraf die für Menschen lesbare Notation, obwohl das Wissen, wie Computer es tun, jemand anderem helfen könnte, also danke :)
Luc

16

In C und Sprachen, die auf der C-Syntax basieren, 0xbedeutet das Präfix hexadezimal (Basis 16).

Somit ist 0 × 400 = 4 × (16 2 ) + 0 × (16 1 ) + 0 × (16 0 ) = 4 × ((2 4 ) 2 ) = 2 2 × 2 8 = 2 10 = 1024 oder ein binäres K. .

Und so ist 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K


10

Es ist eine Hexadezimalzahl.

0x6400 bedeutet 4 * 16 ^ 2 + 6 * 16 ^ 3 = 25600


8

Die mit beginnenden Zahlen 0xsind hexadezimal (Basis 16). 0x6400repräsentiert 25600.

Umwandeln,

  • Multiplizieren Sie die letzte Ziffer mit 1
  • addiere vorletzte Ziffer mal 16 (16 ^ 1)
  • addiere vorletzte Ziffer mal 256 (16 ^ 2)
  • addiere viertletzte Ziffer mal 4096 (16 ^ 3)
  • ...und so weiter

Die Faktoren 1, 16, 256 usw. sind die zunehmenden Potenzen von 16.

0x6400 = (0*1) + (0*16^1) + (4*16^2) + (6*16^3) = 25600 

oder

0x6400 = (0*1) + (0*16) + (4*256) + (6*4096) = 25600 

7

EINFACH

Es ist ein Präfix, das angibt, dass die Zahl hexadezimal und nicht in einer anderen Basis angegeben ist. Die Programmiersprache C verwendet es, um den Compiler zu informieren.

Beispiel:

0x6400übersetzt in 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.Wenn der Compiler liest 0x6400, versteht er, dass die Zahl mit Hilfe des 0x-Terms hexadezimal ist. Normalerweise können wir durch (6400)16 or (6400)8oder jede Basis verstehen ..

Hoffnung hat irgendwie geholfen.

Schönen Tag,

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.