Nad czym się zastanawiałem, jak należy oznaczać liczby ujemne w szesnastce? Jak -0xff czy 0x-ff? Chyba pierwszy, ale nie wiem.
Luc
7
@Luc Pierwsza jest poprawna. Chociaż częściej widzę właśnie 0xffffffffi takie. ( 0xffffffff = -1dla 32-bitowego int przy założeniu uzupełnienia 2)
Mysticial
@Luc Liczby ujemne są przedstawiane w systemie binarnym za pomocą dopełnienia do 2 - sprytny sposób, który nie wymaga znaku „-”. Jest to więc w zasadzie konwersja z binarnego na szesnastkowy, ujemny lub dodatni.
Shuvo Sarker
@ShuvoSarker Dzięki za dodanie! To tylko reprezentacja pamięci, myślę, że podobnie jak gdybyśmy zgodzili się, że mamy zbiór liczb od 0 do 999 i że 1000-1999 będzie reprezentować liczby ujemne. Moje pytanie dotyczyło notacji czytelnej dla człowieka, chociaż wiedza o tym, jak to robią komputery, może pomóc komuś innemu, więc dziękuję :)
Luc
16
W języku C i językach opartych na składni C przedrostek 0xoznacza szesnastkowy (podstawa 16).
Jest to przedrostek wskazujący, że liczba jest zapisana w systemie szesnastkowym, a nie w innej bazie. Język programowania C używa go do informowania kompilatora.
Przykład:
0x6400tłumaczy się na 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.Kiedy kompilator czyta 0x6400, rozumie, że liczba jest szesnastkowa za pomocą terminu 0x. Zwykle możemy zrozumieć przez (6400)16 or (6400)8lub jakąkolwiek podstawę.
0x prefix C++
prowadzi cię tutaj teraz :)Odpowiedzi:
Literały rozpoczynające się od
0x
to szesnastkowe liczby całkowite. (podstawa 16)Liczba
0x6400
to25600
.Na przykład zawierający litery (używane również w notacji szesnastkowej, gdzie A = 10, B = 11 ... F = 15)
Liczba
0x6BF0
to27632
.źródło
0xffffffff
i takie. (0xffffffff = -1
dla 32-bitowego int przy założeniu uzupełnienia 2)W języku C i językach opartych na składni C przedrostek
0x
oznacza szesnastkowy (podstawa 16).Zatem 0x400 = 4 × (16 2 ) + 0 × (16 1 ) + 0 × (16 0 ) = 4 × ((2 4 ) 2 ) = 2 2 × 2 8 = 2 10 = 1024 lub jedno binarne K .
A więc 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K
źródło
To liczba szesnastkowa.
źródło
Liczby zaczynające się od
0x
są szesnastkowe (podstawa 16).0x6400
reprezentuje25600
.Przekonwertować na,
Czynniki 1, 16, 256 itd. To rosnące potęgi 16.
lub
źródło
PROSTY
Jest to przedrostek wskazujący, że liczba jest zapisana w systemie szesnastkowym, a nie w innej bazie. Język programowania C używa go do informowania kompilatora.
Przykład:
0x6400
tłumaczy się na6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.
Kiedy kompilator czyta0x6400
, rozumie, że liczba jest szesnastkowa za pomocą terminu 0x. Zwykle możemy zrozumieć przez(6400)16 or (6400)8
lub jakąkolwiek podstawę.Nadzieja pomogła w jakiś sposób.
Dobry dzień,
źródło