A bináris prefixumokat (más néven bináris előtagokat vagy előtétszókat) a számítástechnikában használják az alapmértékegység kerek többszöröseinek rövidítésére. Összevethető a decimális prefixummal.
Általában véve a prefixum értelme, hogy a nagyobb számokat tartalmazó mértékeket a mértékegység előtt használt jelzéssel – a prefixummal – rövidebben fejezhetjük ki. Példa: ha egy erő 14 000 N (newton) nagyságú, akkor alkalmazhatjuk a kilo prefixum k jelét az erő N mértékegysége előtt, az 1000-es szorzás jeleként, ennek eredményeként ugyanaz az erő 14 kN alakban is leírható. Kiolvasása: 14 kilonewton.
A számítástechnikában a prefixumokat többek között a memória méretének alapegységei, a bit és a byte elé illesztve használják. Ám hogy például a kilo ilyen esetben pontosan mennyit is jelent, arról több évtizedes vita folyik.
A jelenleg (2015) hivatalosan hatályos előírás itt olvasható. Az előírás által követett szabvány a KiB, MiB, GiB, TiB alakú, új informatikai mértékegységeket eredményezte.
Miért van rá szükség? Az 1950-es években kifejlődött digitális számítógépekben a bináris (kétféle állapot valamelyikének felvételére képes) memóriaelemek alkalmazása vált elterjedtté, a mai napig ez jelenti a teljes információtechnika alapját. Több memóriaelem egybefoglalásával olyan tárolócellák születnek, amelyek mindig a 2 valamelyik hatványával kifejezhető számú különböző állapotot vehetnek fel, ennyiféle érték valamelyikét tárolhatják. Amikor egy memóriacella tartalmához kell hozzáférni, szintén bináris alkotóelemek végzik a cella pontos helyének kijelölését – ez az architektúra az 1960-as évek közepére szabvánnyá vált. A bináris címzésből következik, hogy ha az összes lehetséges előállítható memóriacímen egy-egy cellát elhelyezünk, akkor a cellák együttes száma is mindig a 2 valamelyik hatványával fog megegyezni.
Amikor már a számítógépek memóriájának cellaszáma elérte az ezres és még nagyobb nagyságrendet, természetes módon jelent meg az igény a más mértékegységeknél már régóta alkalmazott kerek többszörösök (pl. méter–kilométer) bevezetésére a számítógépek területén is. Mivel a kettes számrendszer ott uralkodó hatású, a többszörösöknek is a 2 hatványai közül volt célszerű kikerülniük, hiszen a tízes számrendszerben is a számrendszer alapjának, a 10-nek bizonyos hatványait rendeljük a prefixumokkal jelölt kerek többszörösökhöz.
Véletlenül a decimális rendszerben már használt kilo előtag által jelölt 1000 értékű szorzóhoz közel áll a bináris rendszer egyik kerek száma, az 1024, amely 210-nel egyenlő. Így adódott a közmegegyezés, hogy a bináris számolást kívánó számítógépes technikában az 1024 lép a decimális világ 1000-ének helyébe. Ebből eredően például ami a decimális rendszerben 1000×1000 = 1 000 000, annak jelentőségét nézve a számítógép-technikában 1024×1024 = 1 048 576 felel meg, és így tovább.
A kezdeti években még voltak példák a számítógépes memóriaelemek decimális alapú egybefogására, de az 1970-es évek közepére a bináris alapú számítási rendszer azt végleg és teljesen kiszorította.
Megjegyzendő, hogy a számítógépes mérnökök más, nem a tárolókapacitást kifejező mértékegységekhez, például az áramköri feszültségnek vagy az időzítő áramkör periódusszámának (órajel) kifejezésére ugyanúgy a decimális alapú számneveket használták és használják, mint bárki más.
A klasszikus jelölés története A mindenki által elfogadott, az 1024 hatványaira épülő rendszer használatához szükség volt a nagyobb egységek jelölésbeli egységének kidolgozására is. Többféle javaslat vált ismertté, illetve vált átmenetileg gyakorlattá szakmai csoportokban, erre a korabeli számítógépes rendszerek részletes dokumentációiban találhatók egyértelmű nyomok, elsősorban az USA-ban, ahol abban az időben a számítógépek gyártása és használata általában folyt. Mivel a számítógépek memóriája egy időben a néhány ezer byte-nyi méretet nem haladta meg, a kevés szakmabeli között kialakult egyik szokás a K jelet tette az 1024 byte rövidítésévé, ez elegendő is volt az egyértelműséghez. Erre már P. Real 1959-es cikkébenA generalized analysis of variance program utilizing binary logic. P. Real, ACM '59: Preprints of papers presented at the 14th national meeting of the Association for Computing Machinery is utalást találhatunk. A K mértékegységnek egy másik értelmezése is használatban volt: a byte-ok pontos számából csak az ezres és nagyobb helyiértékű számjegyek a K betűvel kiegészítve. Ilyen módon lett a 32×1024=32 768-ból 32K, a 128×1024=131 072-ből 131K., 2. fejezet első bekezdései (1-08) Bár a jelölés eredményeként létrejött mértékek avatatlanok számára félrevezetőek, a szakemberek pontosan tudták, hogy a rövidítések milyen számokat helyettesítenek, mivel a memóriatömbök mérete mindig ismert egységekben változott, ezek a kettes számrendszerben jelentőségteljes nagy számok.
Mindemellett még mindig voltak, akik a k jelet az 1000 byte rövidítésére használták, igazodva a CGS, később az MKS-mértékegységrendszerben használt kilo előtag jelentéséhez. A helyzet által okozott bizonytalanság természetesen kényelmetlenségeket okozott a számítástechnika szakemberei között folyó információcserében. 1968-ban ez vezette Donald R. Morrisont, hogy nyílt levelébenLetters to the editor: Abbreviations for computer and memory sizes. Donald R. Morrison, Sandia Corp, Communications of the ACM, Volume 11, Issue 3 (March 1968) a görög κ (kappa) betűvel jelölt új mértékegység bevezetésére tegyen javaslatot, az 1024 byte-ot jelölve így, κ²-tel az 1024²-t stb. Wallace Givens másik lehetőséget vetett fel: jelölje bK az 1024-szeres szorzót, bK² vagy bK2 az 1024×1024-szerest, és így tovább. De egyben megjegyezte, hogy az akkori számítógépes sornyomtatókon mind a görög betű, mind a kis b megjelenítése problémás.Letters to the editor: proposed abbreviation for 1024: bK, Wallace Givens, Applied National Lab, Communications of the ACM, Volume 11, Issue 6 (June 1968) Ezekre válaszul Bruce A. Martin azt javasolta, hogy hagyják el a mértékegységet, és a programnyelvekben a normálalak jelölésére használt formációhoz hasonlóan fejezzék ki a nagy bináris számokat.Letters to the editor: On binary notation, Bruce A. Martin, Associated Universities Inc., Communications of the ACM, Volume 11, Issue 10 (October 1968) Így tehát például a 3×1024×1024-et, amely 3×220-nal egyenlő, írják így: 3B20. A B betű a bináris alapot jelöli a decimális rendszer E (exponens) betűje helyett.
Az ötleteket sajnos nem fogadta a számítógépes szakma elismeréssel, így a K mértékegység használata úgyszólván szabvánnyá merevedett, holott a nagyobb nagyságrendek elérésekor a módszer kiterjesztése nehézségeket ígért. A Nemzetközi Súly- és Mértékügyi Hivatal (BIPM) már 1960-as direktívájában rögzítette a decimális alapú SI-mértékegységrendszer prefixumait és azok jelentését. És amíg az SI kilo előtagjára előírt kis k megkülönböztethető az 1024 byte jelölésére elfogadott nagy K-tól, addig ez a következő nagyságrendet jelölő M esetén már egybeesik a mega előtag M jelével, a még nagyobb mértékeknél ugyanígy.
A kialakult felemás helyzetből való elmozdulásra két lehetőség maradt: a számítástechnika szakít a decimális előtagok használatával és jelölésrendszerével, vagy teljesen birtokba veszi azt, de saját jelentést fenntartva neki. Az utóbbi lehetőség híveinek felülkerekedését jelzi, hogy az ANSI (az USA szabványügyi irodája) és a vele együttműködő IEEE (villamossági és elektronikai mérnökök intézete) számítógépes szakcsoportja egy 1986-ban kihirdetett szabványban megerősítette az SI-előtagok kettős értelmezését: kilo (K): (1) 1000-szerest jelölő előtag. (2) A számítógépes tárolókat tárgyaló közleményekben 210-t, azaz 1024-szerest jelölő előtag és a mega (M) esetében ugyanígy. (Kiemelendő, hogy a definíció egyértelműen csak a tárolók mérése esetére tartja fenn a második értelmezést.) A számítástechnikában ezt a már spontán is elfogadott megoldást ebben az időben mindenki egységesen használta, a magyar nyelvű szakirodalomban is mindig ilyen értelmezésben látható,dr. Sára Attila: Számítógép hardware - egyetemi jegyzet (Tankönyvkiadó, Budapest, 1981)Simonovits Miklós: Számítástechnika (Tankönyvkiadó, Budapest, 1985)Lothar Englisch: Gépi kódú programozás haladóknak - C64 & PC128 (Data Becker - Novotrade, Budapest, 1986) és számos gyártó, elkerülendő a téves értelmezést, a berendezései technikai specifikációiban rögzítette a bináris prefixumok pontos jelentését, valamint a nagyobb tárolóterületeknek a bináris kerek számokra történt alapozását. A mértékegységek kiolvasásában is elfogadott volt a kilo és mega előtagok használata, később az ANSI 1991-es szabványában ezt szentesítette is.
Bináris előtagként sem a deka, hekto, sem az egynél kisebb mértéket jelző előtagok, például a deci, milli, mikro nincsenek értelmezve, és így nem használhatóak.
Új rendszer születése Az egységessé formálódott módszerrel nem volt minden érintett megelégedve. Voltak, akik helytelenítették az SI-mértékegységrendszerben egységesen használt előtagoknak egy más – bináris – értelmezésű használatát, tartva a félreértésektől. „...Bár ezeknek semmi közük az SI-mértékrendszerhez, hiszen az információ egységéhez (bit) nem kötődik semmiféle fizikai-kémiai mennyiség...” És valóban voltak keveredések, meghökkentő típusúak is: a 3⅓ hüvelykes hajlékony mágneslemez (floppy) kétoldalas, nagy sűrűségű (DS, HD) fajtája 80 sávot, sávonként 18 szektort hordoz. Egy szektor 512 byte, a lemezen tehát mindkét oldalt együttvéve 1 474 560 byte tárolható. A gyártók a lemezen egységesen ezt a kapacitást tüntetik fel: 1.44 MB. Ha a két számot elosztjuk egymással, kiderül, hogy a gyártók 1 megabyte-ot 1024×1000 byte-nak számolnak, ismeretlen okból keverve a két egymás mellett létező rendszert.
A számítógép- és információtechnikának két területe az, amely végül teljesen elvetette a bináris prefixumok már kialakult használati módját. Az egyik az informatikai szakemberekből áll, azokból, akik a jeltovábbítás nem feltétlenül számítógépes eszközeiben az adatcsatornák sebességét (sávszélességét) kívánták kifejezni. Mivel ők általában nem is számítógépek memóriájában tárolt adatkötegekkel, hanem különféle forrású adatfolyamokkal foglalkoznak, őket már a szemlélet sem „kötelezte” a prefixumok bináris megfeleltetésére, emiatt 1 kbps (a hazai szabályoknak megfelelő jelzéssel 1 kbit/s) adatátviteli sebesség másodpercenként 1000 bit átvitelét jelenti.
A másik tábort a háttértárolók (merevlemezek, streamerek, pendrive-ok, flash memóriák) gyártói teszik ki, ők visszatértek a prefixumok decimális értelmezéséhez annak ellenére, hogy ők is bitek és byte-ok mennyiségét fejezték ki eszközeiken. „Gigabyte – For drive storage capacity, 1 gigabyte = 1,000,000,000 bytes (or one billion bytes).”
A felhasználók és a szakmérnökök között a gyártók rosszhiszeműségét sejtő magánvélemények bukkantak fel. „Egyesek viszont [az újraformálódó értelmezést] máris kihasználják jogtalan üzleti előnyök szerzésére. Egyes neves merevlemez-gyártók máris megtalálták a módját, hogyan értékeljék fel gyártmányukat anélkül, hogy a terméken változtatnának.” A fogyasztók helytelenítését az az új szokás váltotta ki, hogy a merevlemezt a gyártó pl. 40 gigabyte kapacitásúnak adta meg, ám amikor a vásárló azt használatra alkalmassá tette (formázta), látta, hogy a kapacitás valójában csak 37,25 gigabyte. A különbség az, hogy a gyártó decimális alapon, 40 milliárd byte-ot gondolt, a bináris rendszerhez hozzászokott szakértő vevő pedig 40 bináris GB-ra számított, ami már majdnem 43 milliárd byte volna. A különbözet nem elhanyagolható.
(Megjegyzés: az átállás azért is érdekes, mert a merevlemezek cilinderszámát a szabvány a mai napig 1024-ben maximálja, ezt csak egy szabálytalan, egy új szabvány szerinti módszerrel kiegészítve tudják a nagyobb kapacitású lemezek valós adatait kifejezhetővé tenni.)