Liczby szesnastkowe? |
Autor |
Wiadomość |
FE4R
Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 08-01-2010, 20:55 Liczby szesnastkowe?
|
|
|
Hej hej,
Zacząłem samemu uczyć się C++, gdyż na informatyce nie było miejsc.
Czytając podręcznik / poradnik do języka C++, natknąłem się na frazę 'liczby szesnastkowe', np. 7F (poprzedzone 0X, by zadeklarować je jako liczby szesnastkowe).
Zastanawiam się, jakie mają znaczenie w programowaniu, gdyż w matematyce chyba żadne (moja nauczycielka czegoś takiego nie zna). |
|
|
|
|
sajmon313
Jedi Master
Wiek: 28 Dołączył: 16 Gru 2009 Posty: 42 Skąd: /dev/uarndom
|
Wysłany: 08-01-2010, 21:05
|
|
|
matematyka działa tak samo w systemie dziesiętnym, szesnastkowym, ósemkowym, binarnym, siódemkowym i każdym innym.
Czasami program który z założenia ma akceptować tylko liczby dziesiętne akceptuje też szesnastkowe (automatycznie je konwertuje). |
_________________ Validator CBot - Prace Trwają
Ostatnia Aktualizacja: 02.01.10 |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 08-01-2010, 22:19
|
|
|
Liczby szesnastkowe mają podstawę 16, która jest potęgą 2 - 1 cyfra składa się z 4 cyfr binarnych (2^4=16) (np. F=1111, 8=1000)
Liczby dziesiętne mają podstawę 10, która nie jest potęgą 2 - stąd nie można ich tak łatwo konwertować na liczby binarne. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
Reaper
Wiek: 19 Dołączył: 29 Wrz 2009 Posty: 24 Skąd: Opole
|
Wysłany: 27-03-2010, 22:29
|
|
|
Binarny (dwójkowy) z tego co wiem, zapisuje się tak: 1 | 2 | 4 | 8 (...) | 8192 ?
No i moje pytanie jest takie, czy czyta się je od prawej do lewej, czy to jest umowne (od lewej do prawej)? |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 27-03-2010, 23:20
|
|
|
Źle ;x
Pisze się little endian, czyli tak
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
np. w assemblerze
mov al, 00001001b
oznacza przeniesienie wartości 9 do rejestru.
Nie wiem jak się czyta.
Żeby kogoś nie zmyliło...
w komputerach PC występuje big endian. Ma on wiele zalet, ale wadę w postaci braku przejrzystości. Popatrzmy jak wygląda liczba 0x01020304 w pamięci:
0x04, 0x03, 0x02, 0x01
Czyli binarnie:
00000100 , 00000011 , 00000010 , 00000001
Celowo dałem przecinki, bowiem mamy tu różne notacje - zarówno kolejność BAJTÓW big-endian, jak i kolejność BITÓW little-endian.
Tak naprawdę nie wiemy, jak w _pamięci komputera_ ustawione są bity - ale to nas nie obchodzi, bowiem zawsze czytamy/piszemy do RAMu bajt jako całość.
**ALE!**
Niektóre human-readable zrzuty pamięci zamieniają bajty na word'y i long'i, np. w widoku nie mamy:
Kod: | 00000020 45 AB 32 9A |
lecz:
albo wręcz:
Co z tego wynika?
Wydajmy polecenie w bash'u i popatrzmy:
Kod: | adiblol@hydrogen:~$ echo -ne "\xDE\xAD\xBE\xEF" | hexdump
0000000 adde efbe
0000004 |
Co widzimy? Daliśmy programowi do heksadecymalnego oglądania wejścia strumień bajtów w takiej kolejności: DE, AD, BE, EF. Otrzymaliśmy ADDE, EFBE. hexdump zamienił sekwencje 2-bajtowe na word'y.
Popatrzmy do manuala hexdump'a i napiszmy odpowiedni ciąg formatujący:
Kod: | adiblol@hydrogen:~$ echo -ne "\xDE\xAD\xBE\xEF" | hexdump -e '/1 "%08_ax %08X\n"'
00000000 000000DE
00000001 000000AD
00000002 000000BE
00000003 000000EF |
Za ilość bitów odpowiada: hexdump -e '/1 "%08_ax %08X\n"'. Zmieńmy jedynkę na coś innego:
Kod: | adiblol@hydrogen:~$ echo -ne "\xDE\xAD\xBE\xEF" | hexdump -e '/2 "%08_ax %08X\n"'
00000000 0000ADDE
00000002 0000EFBE |
I na coś jeszcze innego:
Kod: | adiblol@hydrogen:~$ echo -ne "\xDE\xAD\xBE\xEF" | hexdump -e '/4 "%08_ax %08X\n"'
00000000 EFBEADDE |
Jeśli ktoś chce w przyszłości zostać informatykiem, to powinien przeanalizować sobie te skutki zmiany ilości bajtów ... |
_________________ 1Tbps Project && Telecomix Network
|
Ostatnio zmieniony przez adiblol 17-05-2010, 14:33, w całości zmieniany 1 raz |
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 29-03-2010, 14:16
|
|
|
Ze co?
// Że g*wno, 1:0 -adiblol |
Ostatnio zmieniony przez adiblol 29-03-2010, 15:31, w całości zmieniany 1 raz |
|
|
|
|
FE4R
Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 31-03-2010, 22:38
|
|
|
adiblol, po studiach informatycznych jesteś? |
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 31-03-2010, 23:37
|
|
|
Cytat: | adiblol, po studiach informatycznych jesteś? |
"Papiery" (dokumenty) są dla noobów .
"Oficjalnie" jestem na takim samym poziomie jak reszta noobów co nawet Ubuntu zainstalować nie potrafią...
...MEN ssie...
amen. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
FE4R
Twoja ulubiona misja: Saari - Inwazja
Pomógł: 4 razy Wiek: 24 Dołączył: 21 Paź 2009 Posty: 144
|
Wysłany: 01-04-2010, 11:39
|
|
|
adiblol napisał/a: | "Papiery" (dokumenty) są dla noobów .
"Oficjalnie" jestem na takim samym poziomie jak reszta noobów co nawet Ubuntu zainstalować nie potrafią...
...MEN ssie...
amen. |
Uczyłbyś się za granicą - byłoby tak samo. Trzeba być tym zainteresowanym, dlatego też pytam. ^^ (Nie, nie zainteresowanym Tobą, tylko informatyką). |
|
|
|
|
Simbax
Mod
Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy Wiek: 22 Dołączył: 07 Sie 2009 Posty: 473 Skąd: z Leszna
|
Wysłany: 02-10-2010, 13:46
|
|
|
Wyczytałem sobie w google, że szesnastkowy system się stosuje dlatego, że zapis w nim jest krótszy od dziesiętnego Np. AB12 to liczba 43794 Ciekawych rzeczy się dowiedziałem z tego artykułu: http://www.programuj.com/...ne/sysliczb.php , pod koniec jest o zapisie szesnastkowym. BTW Resztę się wcześniej na matmie z ciekawostek dowiedziałem ;p |
_________________ http://projektsimbax.blogspot.com/ <- Taki sobie blog |
|
|
|
|
Programerus
Jestem Bogiem
Pomógł: 2 razy Wiek: 22 Dołączył: 28 Mar 2009 Posty: 188 Skąd: Kołobrzeg
|
Wysłany: 02-10-2010, 15:17
|
|
|
Nie dlatego że jest krótszy od dziesiętnego, tylko dlatego że jest krótszy od binarnego np.
0010 0101 to szesnastkowo 25 |
_________________ "Tylko bogaci mogą mówić mi, że pieniądz nie daje szczęścia" |
|
|
|
|
Simbax
Mod
Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy Wiek: 22 Dołączył: 07 Sie 2009 Posty: 473 Skąd: z Leszna
|
|
|
|
|
Programerus
Jestem Bogiem
Pomógł: 2 razy Wiek: 22 Dołączył: 28 Mar 2009 Posty: 188 Skąd: Kołobrzeg
|
Wysłany: 03-10-2010, 01:32
|
|
|
Od dziesiętnego też, ale nie ma dużej różnicy. |
_________________ "Tylko bogaci mogą mówić mi, że pieniądz nie daje szczęścia" |
|
|
|
|
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 03-10-2010, 11:34
|
|
|
System szesnastkowy jest niby krotszy od dziesietnego, ale zamiana z dziesietnego na szesnastkowy to masakra i operowanie na dziesietnym jest duzo latwiejsze. |
_________________
|
|
|
|
|
adiblol
Administrator forum FLOSS FTW!
Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy Dołączył: 21 Kwi 2008 Posty: 1313 Skąd: pokój odsłuchowy
|
Wysłany: 03-10-2010, 13:53
|
|
|
Jest łatwiejszy ponieważ jesteś przyzwyczajony. Dla komputera łatwiejszy jest szesnastkowy, ponieważ *zawsze* 1 cyfra szesnastkowa to 4 cyfry dwójkowe. |
_________________ 1Tbps Project && Telecomix Network
|
|
|
|
|
|