Kódolások

All lectures for HU purposes
Szint , Lecke
Elérhető

1. Oktális kódolás

Ha már a kódolásoknál tartunk... Mint tudod, a mindennapi életben decimális jelölést használunk : minden számunk 10 szimbólummal van ábrázolva: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 10 van. számok, ezért a rendszert decimálisnak nevezzük.

De a programozók nagy feltalálók. Azonnal kitaláltak olyan kódolásokat, amelyek eltérő számú szimbólumot használnak. Például 16, 8 és 2.

A 8 szimbólumot használó alternatív kódolás a legegyszerűbb: csak dobja el a 8-at és a 9-et, és kap egy oktális kódolást (az oktális számrendszert ).

És igen, használhatja az oktális rendszert a numerikus literálok megadására. Persze ha nagyon muszáj. Könnyebb, mint amilyennek hangzik. Csak a 0-t kell a szám elé írni.

Más szavakkal, a Java minden 0-val kezdődő egész literált oktális értékként kezel.

Példák:

Kód Megjegyzések
int x = 015; 
x értéke 13: 1*8+5
int x = 025; 
x értéke 21: 2*8+5
int x = 0123; 
x értéke 83: 1*64+2*8+3 == 1*8 2 +2*8 1 +3*8 0
int x = 078;
Ez nem fordítható le: a 8 nem tartozik az oktális kódolásban használt szimbólumok közé.

Nem valószínű, hogy oktális számokat kell beírnia a kódba, de tudnia kell, mik ezek. Végül is el kell olvasnia mások által írt kódot. És ahogy fentebb említettük, a programozók nagy feltalálók.

Nos, ne feledje, hogy nem írhat egyszerűen 0-t minden szám elé.



2. Bináris kódolás

A bináris kódolás még érdekesebb. Ha az oktálisnak csak a 0-7 számjegye van, akkor a binárisban csak 0 és 1. Miért van szükség erre a kódolásra?

Ennek mindennek köze van a számítógép belső felépítéséhez. A számítógépben minden árammal működik, és ahogy megtörténik, a leghatékonyabb módja annak, hogy valamit elektromos árammal tároljunk és továbbítsunk, két állapotot használunk: vagy nincs áram a vezetékben (nulla), és van áram (egy).

Ez az eredete a kettes számrendszer népszerűségének.

Elvileg nem túl gyakran használják a Java-ban: a Java magas szintű nyelvnek számít, teljesen elvonatkoztatva attól a hardvertől, amelyen fut. Valóban érdekli Önt, hogy milyen formátumban tárolják és dolgozzák fel az adatokat a számítógépen belül?

De az elmúlt évtizedek során a programozók megszerették a bináris kódolást (és más, azon alapuló kódolásokat). Ennek eredményeként a Java-nak vannak olyan operátorai, amelyek bináris számokat vesznek bemenetként. A lebegőpontos számok pontossága pedig a bináris ábrázolásuktól függ.

Alapvetően jobb, ha tud erről a kódolásról, mint ha nem tud.

Az oktális kódoláshoz hasonlóan a Java-nak is van módja a literálok kódolására a bináris rendszer segítségével. Vagyis a literálok csak 0-ból és 1-ből állnak. Annak érdekében, hogy a Java fordító megértse, hogy a kód binárisan kódolt numerikus literált tartalmaz, nem pedig egyszerűen nullákból és egyesekből álló decimális számot, az összes bináris literált a 0b előtaggal azonosítja (a „b” a bináris szóból származik) .

Példák:

Kód Megjegyzések
int x = 0b100; 
х értéke 4: 1*4+0*2+0
int x = 0b1111; 
х értéke 15: 1*8+1*4+1*2+1
int x = 0b1111000111; 
х értéke 967: 1*2 9 +1*2 8 +1*2 7 +1*2 6 +0*2 5 +0*2 4 +0*2 3 + 1*2 2 + 1*2+1;
int x = 0b12000;
Ez nem fordítható le: a 2 nem tartozik a bináris kódolásban használt szimbólumok közé.


3. Hexadecimális kódolás

Az oktális és bináris kódolások mellett a literálok hexadecimálisan is írhatók. Ez egy nagyon népszerű kódolás.

Ez azért van így, mert bár a bináris jelölés a lehető legközelebb áll a számok tényleges tárolási módjához, az emberek számára túl nehéz hatékonyan dolgozni ilyen számokkal: binárisan az egymillió szám 20 számjegyből áll, nem 7-ből.

A programozók ezért találták ki a hexadecimális rendszert. Végül is a 16 a 2-t jelenti a 4. hatványra emelve, tehát pontosan 4 bit felel meg egy hexadecimális számjegynek. Nagyjából elmondható, hogy most már minden 4 bit felírható egyetlen hexadecimális számjegyként.

A hexadecimális kódolásnak is megvan a maga egyedi előtagja: 0x . Példák:

Decimális szám Bináris jelölés Hexadecimális jelölés
17 0b 0001 0001 0x11 _ _
4 1 0b 0010 1 00 1 0x29 _ _
85 0b 0101 0101 0x5 5 _
256 0b 1 0000 0000 0x 1 0 0

Oké, azt mondod, elég világos, hogyan kaptuk az oktális rendszert: csak kidobtuk a 8-as és a 9-es számokat, de honnan vegyük a 6 plusz szimbólumot a hexadecimális rendszerhez? Szeretném látni őket!

Minden egyértelmű. Az angol ábécé első 6 betűjét a 6 hiányzó szimbólumnak vettük: A (10), B (11), C (12), D (13), E (14), F (15).

Példák:

Hexadecimális jelölés Bináris jelölés Decimális szám
0x1 _ 0b 0000 0001 1
0x9 _ 0b 0000 1001 9
0x A 0b 0000 1010 10
0x B 0b 0000 1011 11
0x C 0b 0000 1100 12
0x D 0b 0000 1101 13
0x E 0b 0000 1110 14
0x F 0b 0000 1111 15
0x 1 F 0b 0001 1111 31
0x A F 0b 1010 1111 175
0x F F 0b 1111 1111 255
0x F F F 0b 1111 1111 1111 4095


4. Hogyan alakíthatunk át egy számot hexadecimálisból

Egy szám hexadecimálisról decimálisra konvertálása nagyon egyszerű. Tegyük fel, hogy megvan a 0 x A F C F szám . Mennyi ez tizedesben?

Először is van egy helyzetszámrendszerünk, ami azt jelenti, hogy az egyes számjegyek hozzájárulása a teljes számhoz 16-szorosára nő, ahogy jobbról balra haladunk:

A * 16 3 + F * 16 2 + C * 16 1 + F

Az A szimbólum a 10-es számnak, a C betű a 12-nek, az F betű tizenötnek felel meg. Kapunk:

10 * 16 3 + 15 * 16 2 + 12 * 16 1 + 15

A 16-ot a számoknak megfelelő különböző hatványokra emelve a következőket kapjuk:

10 * 4096 + 15 * 256 + 12 * 16 + 15

Mindent összegezünk, és megkapjuk:

45007

Tudja, hogyan tárolódik ez a szám a memóriában:

0x A F C F

De most alakítsuk át binárisra. Binárisan ez lenne:

0b 1010 1111 1100 1111

Minden négy bitből álló halmaz pontosan egy hexadecimális karakternek felel meg. Ez szuper kényelmes. Mindenféle szorzás és hatványozás nélkül."


Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION