2012-03-02 9 views
9

Zawsze uczono 0-9 reprezentowania wartości od zera do dziewięciu, a A, B, C, D, E, F od 10-15.0x00000000 szesnastkowo?

Widzę ten format 0x00000000 i nie pasuje do wzorca szesnastkowego. Czy istnieje jakiś przewodnik lub nauczyciel, który może to wyjaśnić?

Wyszukałem go w systemie szesnastkowym, ale nie mogę znaleźć żadnego wyjaśnienia.

Moje drugie pytanie brzmi: czy istnieje nazwa formatu 0x00000000?

+2

'0x0000' jest liczbą szesnastkową. "0x" wskazuje, że powinno być ocenione w bazie 16 zamiast 10. Bez tego nie wiedziałbyś, czy "15" jest dziesiętne czy szesnastkowe (lub ósemkowe). Czy to chciałeś wiedzieć? –

+0

Czy istnieje nazwa tego konkretnego formatu lub muszę wpisać w systemie heksadecymalnym w Google, mając nadzieję, że pojawi się ten format? – nhat

+1

@nhat '0x' jest standardowym prefiksem heksadecymalnym, po prostu mówi ci, że następująca liczba będzie na heksie. Szukanie google nie powinno być konieczne (po prostu weź to, co wiesz o hex i zapamiętaj ten prefiks). – jzworkman

Odpowiedz

12

0x prostu podaje liczbę po to będzie w hex

więc 0x00 jest 0, 0x10 jest 16, 0x11 to 17 itd

+0

ok, jeśli chodzi o 1s, dlaczego 0x0080 = 128? – nhat

+0

@nhat nie robi się przez nich, każde miejsce ma współczynnik 16, więc dla twojego przypadku jest to 8 * 16 lub 128, ponieważ 8 jest w miejscu 16. – jzworkman

+0

Zauważyłem 0x00000080 = 0x0080. Formatowanie, które mnie myliło, ale po przyjrzeniu się temu więcej, zaczyna mieć więcej sensu. – nhat

9

0x tylko prefiks (stosowany w C i wielu innych językach programowania) oznacza, że ​​następujący numer jest w bazie 16.

Inne oznaczenia, które zostały użyte do hex obejmują:

$ABCD 
ABCDh 
X'ABCD' 
"ABCD"X 
+0

fajne, dzięki za informację. Nigdy wcześniej nie widziałem tych formatów. Czy jest jakaś konkretna strona, z której się tego nauczyłeś? – nhat

+0

Pracowałem z * wszystkimi * tymi notatkami, zanim jeszcze był internet. Więc nie ma konkretnej strony internetowej. –

+1

lol fajne dzięki! – nhat

1

szesnastkowy s są często poprzedzane przez 0x, aby wskazać, że są cyframi szesnastkowymi. W tym przypadku jest 8 cyfr, z których każda reprezentuje 4 bity, czyli 32 bity lub słowo. Zgaduję, że zobaczyłeś to w błędzie i jest to adres pamięci, ta wartość oznacza zero, ponieważ wartość szesnastkowa to 0.

3

Wszystko po x są cyframi szesnastkowymi (0x jest tylko przedrostkiem do oznaczenia hex), co stanowi 32 bity (jeśli było umieścić 0xFFFFFFFF w systemie binarnym, to byłoby 1111 1111 1111 1111 1111 1111 1111 1111).

3

Tak, to jest szesnastkowy.

w przeciwnym razie nie może reprezentować A, na przykład Kompilator dla C i Java potraktuje go jako identyfikator zmiennej.Dodany prefiks 0x mówi kompilatorowi, że jest to numer szesnastkowy, czyli:

int ten_i = 10; 
int ten_h = 0xA; 

ten_i == ten_h; // this boolean expression is true 

The zerami wskazują wielkości: 0x0080 do krytego numer będzie przechowywany w dwa bajtów; i 0x00000080 reprezentuje cztery bajtów. Taka notacja jest często używana dla flag: jeśli określony bit jest ustawiony, ta funkcja jest włączona.

P.S. Jako notatka nie na temat: jeśli numer zaczyna się od 0, jest interpretowany jako liczba ósemkowa, na przykład 010 == 8. Tutaj także prefiks to 0.