Binárisan kódolt decimális

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

A számítástechnikában és az elektronikus rendszerekben a binárisan kódolt decimális – Binary-Coded Decimal (BCD) a decimális számok egy kódolási formája, amelyben minden számjegyet egy-egy bitsorozat ábrázol. Ezzel a módszerrel a számok konverziója és megjelenítése lényegesen egyszerűbbé válik. Ugyanakkor valamivel több elektronikus áramkörre van szükség a aritmetikai számításokhoz, és tárolóterületet veszítünk. Ennek ellenére ez a kódolási eljárás fontos, és használatos még ma is.

A BCD-nél, egy számjegynek általában 4 bit felel meg, amelyek általában a 0–9 karaketereket is jelentik. Más kombinációkat is használnak az előjelek és egyebek jelzésére.

Tartalomjegyzék

Alapok

Egy decimális szám BCD kódolása egy gyakran alkalmazott kódolási eljárás, ami minden számjegy kódolásához egy négy bites bináris formát használ. Például a 127 kódolva:

0001 0010 0111 

Mivel a legtöbb számítógép az adatokat 8 bites byte-okban tárolja, két megoldás használatos arra, hogy a 4 bites BCD számjegyeket byte-okon tárolják:

  • minden számjegyet egy byte-on tárolnak, a második négy bit ekkor minden esetben 0000 (az EBCDIC kódnál), vagy 0011 ( ASCII kódnál)
  • két számjegyet tárolnak minden byte-on.

A tiszta bináris ábrázolással szemben, nagy számok esetében a megjelenítés egyszerűen csak nibble-nként történhet, azonos logika felhasználásával. A tiszta binárisból decimálisba való konverzió bonyolult, és a szorzási vagy osztási műveletek használatát igényli, és pontosság is kérdéses. Több PC BIOS-a a dátum- és idő értéket BCD formában tárolja és kezeli, valószínűleg történeti okokból, (hogy elkerüljék a ASCII konverziót.)

BCD az elektronikában

A BCD nagyon elterjedt az elektronikában, ahol numerikus értékeket kell megjeleníteni, és erre csak a rendszreben digitális logika, és mikroprocesszor nem áll rendelkezésre. A BCD használatával a megjelenítendő számjegyek kezelése sokkal egszerűbb, minden számjegyhez egy saját, és számjegyenként azonos logika tartozik, a szokásos 7 szegmens kijelzők is egy ilyen rendszerhez illeszthetők egyszerűen. Ha a numerikus értéket tisztán binárisan tárolná és kezelné a rendszer, akkor a megjelenítéshez egy komplex áramköri logika kellene, gondoskodni kellene a felesleges nullák elnyomásáról stb. Fentiek miatt a BCD kódolás cészerűsége, a viszonylag egyszerű aritmetika széleskörű elterjedtséget biztosít az elektronikában a tiszta bináris ábrázolással szemben.

Hasonló érvek hozhatók fel akkor is, ha úgynevezett "beágyazott" mikrokontrollert vagy mikroprocesszort is tartalmaz az áramkör. Kevesebb kód szükséges a BCD kezeléséhez, a konverziókhoz a kijelzés egyszerűbb. Fentiek miatt néhány mikrokontroller és mikroprocesszor rendelkezik már direkt BCD utasításokkal, amivel tovább egyszerűsíthető a BCD kódolású adatok kezelése.

Tömörített vagy pakolt – packed – BCD

Széles körben elterjedt variáció a két-számjegy-per-byte kódolás, amely "pakolt BCD" vagy "tömörített BCD" néven közismert. Itt a szám a számjegyeket és végén az előjelet jelenti: általában 1100 a pozitív és 1101 a negatív. Pakolt BCD formában a 127-et a 00010010 01111100 byte-ok jelentik, és a mínusz 127-et pedig a 00010010 01111101.

Ugyan a tömörített BCD nem optimális a tárolás szempontjából (nagyjából a rendelkezésre álló terület 1/6-a veszteség a tömörített BCD esetében) az EBCDIC és ASCII konverzió, valamint a Unicode különböző változataiba való konverzió egyszerű, nem igényel külön aritmetikai lépéseket. Léteznek nagyobb tömörítettségű BCD változatok, itt a tárterület kihasználtsága optimáis, szintén nem igényelnek járulékos aritmetikai műkeleteket a legtöbb konverzióhoz.

Nagy sűrűségű kódolás

Ha egy decimális számjegyhez 4 bit szükséges, akkor három decimáls jegyhez 12 bit kell. Mivel 210>103, akkor 3 decimális jegy együttes konverziója csak 10 bitet igényel. A Chen-Ho kódolás és a Densely tömörített decimális ilyen típusú kódolás. Nagy előnye, hogy két számjegy esetében az optimális 7 bitet, míg 1 számjegy esetén 4 bitet ihasznál, mint a szabályos BCD.

IBM és a BCD

Az IBM használta a binárisan kódolt decimális és a BCD kifejezést egy hat bites úgynevezett alfamerikus kódra, amely a számokat, a nagybetűket és speciális karaktereket kezelt. Az IBM korai gépeiben a BCD néhány variánsát használta, mint az IBM 1620, IBM 1400 series és az IBM 700/7000 sorozatának nem-decimális architektúrájú tagjai. Az IBM System/360, sorozat megjelenésekor tért át az IBM BCD a 8-bites EBCDIC-re.

Ennél a BCD formánál a biteket az B, A, 8, 4, 2 és 1 cimkékkel látták el. Számok kódolása esetében B és A nulla értékű. A A betű kódja (B,A,1).

A 1620 BCD alfamerik esetében számpárokat használtak, a páratlan jegyeket a "zóna – zone" esetében, és páros jegyeket a "számjegy-digit" esetében. A ki/bevitel esetén a hardver konvertálta a belső jegyeket a külső, szabályos hat-bites BCD kódra, és vissza.

A decimális architektúrájú IBM 7070, IBM 7072, és IBM 7074 alfamerik kódolásnál a számpárokat használták (a kettő-az-ötből kódot használtak, és nem BCD-t) a 10-jegyes szavakhoz, a "zona" a bal jegyeket, a "számjegy" pedig a jobb jegeket jelentette. A ki/beviteli konverziókat szintén hardver végezte.

BCD összeadás

Egy összeadás végrehajtásához a BCD kódok között először össze kell adni binárisan a 4 bites számokat, majd esetleg egy konverziót kell még elvégezni, hogy a helyes eredményt megkapjuk. A konverzió abból áll, hogy minden olyan csoportra, ahol az összeadás után az eredmény nagyobb volt, mint 9, hozzá kell még adni az eredményhez 6-ot. Például:

  • 9+6=15 = [1001] + [0110] = [1111] binárisan.

Binárisan az edemény nem lehet nagyobb, mint 9 (nibble-nként), ezért korrekcióként a csoporthoz hozzá kell adni még 6-ot:

  • 15+6 = [0000 1111] + [0000 0110] = [0001 0101]

ami eredményül már két nibble-t ad, [0001]-et és [0101] ami pontosan az "1" és "5" megfelelője. Így a BCD összeadás a helyes eredményt adja.

Lásd még Douglas Jones' Tutorial.

Háttér

A következő táblázatban a legismertebb BCD kódolási formákat ábrázoljuk, a teljesség igénye nélkül. A BCD 8421-re gyakran hivatkoznak, mint egyszerű binárisan kódolt decimális – Simple Binary-Coded Decimal (SBCD) vagy BCD 8421. Használják még a NBCD rövidítési is, ami a Natural Binary-Coded Decimal – természetes binárisan kódolt decimális rövidítése.

A táblzat fejlécében a '8 4 2 1' mutatja a bitek súlyait; meg kell jegyezn, hogy az 5. oszlopban két súly negatív.

A következő táblázat a decimális 0 és 9 közé eső számokat ábrázolja a különböző BCD rendszerekben:

Számjegy BCD
8 4 2 1
Excess-3
vagy Stibitz kód
BCD 2 4 2 1
vagy Aiken kód
BCD
8 4 −2 −1
IBM 702 IBM 705
IBM 7080 IBM 1401
8 4 2 1
0 0000 0011 0000 0000 1010
1 0001 0100 0001 0111 0001
2 0010 0101 0010 0110 0010
3 0011 0110 0011 0101 0011
4 0100 0111 0100 0100 0100
5 0101 1000 1011 1011 0101
6 0110 1001 1100 1010 0110
7 0111 1010 1101 1001 0111
8 1000 1011 1110 1000 1000
9 1001 1100 1111 1111 1001


 

Jogi vonatkozása

1972-ben, az USA Legfelső Bírósága felülbírálta egy alsóbb fokú bíróság döntését, amelyik megengedte egy BCD kódolású számok egy számítógépre történő bináris konverziójának szabadalmaztatását. (lásd: Gottschalk v Benson). Ez egy nagyon fontos eset volt egy szoftver vagy algoritmus szabadalmaztathatóságának meghatározásánál.

A tiszta binárissal való összehasonlítás

Előnyei

  • A 10-zel vagy 10 hatványaival történő szorzás egyszerű, a tizedesek és egészek kezelése lényegében megegyezik a megszokottal.
  • Kerekítés egyszerűen végrehajtható.
  • A karakter formátumra való konverzió vagy megjelenítés (u.m. szöveg alapú formátumok, mint pl. XML, vagy 7 szegmens kijelző meghajtása megjelenítésnél) sokkal egyszerűbb, mint mint tiszta bináris tárolás esetében.

Hátrányai

  • Több aritmetikai művelet megvalósítása bonyolultabb, mint a tiszta bináris esetében. Az összeadók esetében külön logika kell az átvitelek vizsgálatához és kezeléséhez. Hozzávetőlegesen 15-20%-kal több áramkört igényel a tiszta binárissal összehasonlítva. A szorzási algoritmus sokkal komplexebb, mint a tiszta binárisnál használt léptetés-maszkolás-összeadás (egy bináris szorzáshoz léptető és összeadó egységek szükségesek, számjegyenként vagy számjegy csoportonként). :)

Lásd még

Egyéb, külső hivatkozások

Egyéb információk, refernciák

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net