Lenne egy kérdésem hozzád. – SparkFun Electronics

Számrendszer átalakítások

Mikrovezérlőkhöz való programíráskor általában 3 különböző számrendszerrel kell foglalkoznunk: decimális, bináris és hexadecimális (vagy hex). Azért használjuk a decimális számrendszert, mert ez a természetes; mi így számolunk. Sajnos a számítógépek nem így számolnak. Mivel a számítógépek és a mikrokontrollerek csak 1-es és 0-s számokra korlátozódnak, ezért e számok sorozataival számolnak. Ez a bináris számrendszer. A bináris számok elé általában a ‘0b’ karaktereket illesztik, amelyek nem részei a számnak. Néha 4 számjegyből álló csoportokra is fel vannak osztva, hogy könnyebben olvashatók legyenek, és könnyebb legyen a hexadecimális számrendszerhez viszonyítani őket. Egy példa a bináris számra: 0b0100.1011. A számban lévő pontok nem jelentenek semmit, csak megkönnyítik a szám olvasását.

A bináris rendszer egyszerűen érthető, de sok számjegyre van szükség ahhoz, hogy a bináris rendszert nagy számok ábrázolására használjuk. A hexadecimális rendszer sokkal nagyobb számokat tud ábrázolni kevesebb karakterrel, és nagyon hasonlít a bináris számokhoz. A hexadecimális számok elé általában a “0x” karaktereket illesztik, amelyek nem részei a számnak. Egyetlen hexadecimális számjegy négy bináris számjegyet jelenthet!
A bináris számok csak 1-ekből és 0-kból állhatnak; jellemzően egy bináris szám 8 számjegyből (vagy a 8 többszöröséből) áll, ha valamilyen számítógépben (vagy mikrokontrollerben) használják. Hasznos tudni, hogyan lehet egy bináris számot decimális számmá alakítani, és fordítva. Hogyan konvertáljuk tehát a számrendszerek között? Először nézzük meg, hogyan határozzuk meg egy decimális szám értékét. A 268-as szám felbontható úgy, hogy 200 + 60 + 8, vagy 2 * (10^2) + 6 * (10^1) + 8 * (10^0). Két fontos számot kell ismernünk a szám “lebontásához” – a számrendszer bázisát és a számjegy helyét a számon belül. A tízes számrendszer bázisa a 10. Amikor a 268-as számot alakítjuk át, a 2 a második számjegy, a 6 az első számjegy, a 8 pedig a nulladik számjegy. Minden egyes számjegyet a számon belüli helyének megfelelően kell skálázni. A számjegy skálája a számrendszer bázisa a számjegy számban elfoglalt helyének hatványára emelve. Tehát minden egyes számot skálázunk, majd az összes skálázott számjegyet összeadjuk, hogy megtaláljuk a szám összértékét.
Ugyanez a módszer használható egy bináris szám értékének meghatározására is. Nézzük például a 0b1011.0101-es számot. A bináris rendszer bázisa 2 (a 0b előtagot gyakran használják a kódban annak jelzésére, hogy a szám bináris formátumú). Számunk értéke: 1*(2^7)+0*(2^6)+1*(2^5)+1*(2^4)+0*(2^3)+1*(2^2)+0*(2^1)+1*(2^0), ami egyenlő 181.
0b1011.0101. Micsoda teljesen hatástalan módja egy szám beírásának! De ugyanazt a bináris számot mindössze 2 hexadecimális számjeggyel is ábrázolhatjuk. Először azonban egy hexadecimális (hex) számot alakítunk át decimálisra, ahogyan azt a bináris számok esetében is tettük. Mit szólnál a 0xB5-höz? Várj, mi?! A 0x előtagot a kódban arra használjuk, hogy jelezzük, hogy a számot hexadextben írjuk. De mit keres ott a “B”? A hexadecimális formátum bázisa 16, ami azt jelenti, hogy minden egyes számjegy legfeljebb 16 különböző értéket képviselhet. Sajnos a ‘9’ után kifogyunk a számjegyekből, ezért betűket kezdünk használni. Az “A” betű a 10, a “B” a 11, a “C” a 12, a “D” a 13, az “E” a 14, az “F” pedig a 15 számjegyet jelenti. Az ‘F’ a legnagyobb számjegy a hexa számrendszerben. A számot ugyanúgy alakítjuk át, mint korábban. A 0xB5 értéke tehát a következő: B*(16^1)+5*(16^0) vagy 181.
A bináris és hexa decimálisra való átalakítása fontos, de a leghasznosabb számkonverzió valószínűleg a hexa és a bináris közötti átalakítás. Ez a két számrendszer valójában elég jól működik együtt. A számrendszerek történetesen úgy kapcsolódnak egymáshoz, hogy egyetlen hexa számjegy pontosan 4 bináris számjegyet jelent, és így 2 hexa számjegy 8 bitet (vagy bináris számjegyet) jelenthet. Itt egy táblázat, amely megmutatja, hogy az egyes hexa számjegyek hogyan kapcsolódnak a bináris rendszerhez:

Bináris érték Hex érték
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Például, a 0x1C hexa számot binárisra konvertáljuk, megkeressük az 1 és a C megfelelő bináris értékét, és kombináljuk őket. Tehát a 0x1C binárisan 0b0001.1100. Ha egy bináris szám hexaértékét szeretnénk kitalálni, akkor a másik irányba megyünk. A 0b0010.1011 bináris szám hexa alakú ábrázolásához először megkeressük a 0010, majd az 1011 hexa értékét, és kombináljuk őket; a hexa érték 0x2B.

Számos ingyenes eszköz áll rendelkezésre, amelyek segítenek a számrendszerek közötti átváltásban, csak keressük ki a “hex szám konverzió” szót. Ha Windows operációs rendszert használsz, akkor a számológépbe beépített nagyszerű eszközzel rendelkezel. Csak állítsd át a számológépet tudományos üzemmódba, és a számrendszerek közötti konverzióhoz be kell írnod egy számot, majd meg kell változtatnod a számológép formátumát!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.