Kibibyte? Mebibyte? Vad i hela världen är det?

Det finns en del förvirring om exakt hur stor en kilobyte och en megabyte är. Och finns det verkligen något som heter kibibyte och mebibyte? Här ska vi försöka reda ut det.

Av Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se). Senaste ändring 17 januari 2006.

Innan datorerna dök upp

I skolan fick vi lära oss att kilo betyder tusen: ett kilogram är tusen gram, en kilometer är tusen meter, och så vidare.

Kilo är ett prefix, vilket betyder något som man sätter framför ett annat ord. Ett enhetsprefix som kilo sätter man framför en enhet, som meter. Det finns fler såna enhetprefix, till exempel hekto, som betyder hundra, och milli, som betyder en tusendel.

En del av oss kommer ihåg fler prefix, som mega för en miljon och giga för en miljard. En megawatt är en miljon watt, och en gigawatt är en miljard watt. På vintern drar Sverige upp till 27000000000 watt elström, vilket är lika med 27000000 kilowatt, 27000 megawatt eller 27 gigawatt. (Ja, det ska skrivas megawatt och inte megaWatt eller MegaWatt. Dock är förkortningen MW.)

Tal med många nollor brukar man ange med hjälp av tiopotenser: 1000 kan skrivas som 103, 10000 som 104, och så vidare. En miljon har sex nollor (1000000), och kan skrivas som 106. En miljard har nio nollor (1000000000), och kan skrivas som 109.

Sammanfattning:

De här prefixen är definierade i det så kallade SI-systemet, det internationella systemet för enheter. SI-systemet är en vidareutveckling av metersystemet, som tillkom i slutet av 1700-talet, och det har inget särskilt med datorer att göra.

Datorer och deras binära tal

Sen var det nån som uppfann datorer. Som vi vet arbetar datorer med binära tal, det vill säga enbart siffrorna 0 och 1. Hela datorn är uppbyggd runt det binära talsystemet. Alltså använder datorn binära tal även för att räkna hur stort minnet är.

En riktigt gammal dator hade kanske ett minne som hade 1024 platser. Varför 1024 och inte 1000? Jo, det beror förstås på det där med binära tal. Datorn räknar: 0, 1, 10, 11, 100, 101, 110, 111, 1000, och så vidare. 1000 i det binära talsystemet motsvarar 8 i det vanliga decimala talsystemet. För att vara tydliga kan vi skriva att 10002 motsvarar 810.

Om datorn använder upp till tio binära siffror för att numrera minnesplatserna, blir det just 1024 olika nummer: från 0 upp till 11111111112. 11111111112 är lika med 102310. Med den minnesplatsen som har nummer noll, blir det 1024 minnesplatser.

Om datorn använder upp till tjugo binära siffror för att numrera minnesplatserna, går det att ha 1048576 olika minnesplatser. 111111111111111111112 plus ett är nämligen lika med 104857610. (Det är också lika med 1024 gånger 1024.)

Nu var det ganska opraktiskt att hela tiden prata om datorer med 1024 eller 1048576 minnesplatser. Därför noterade någon smart person att 1024 är ju ungefär 1000, så då kan vi använda prefixet kilo. Ungefär i alla fall. Och 1048576 är ju ungefär en miljon, så då kan vi använda prefixet mega. Ungefär i alla fall.

Om datorn kan lagra en byte (vilket brukar vara åtta bitar) i en minnesplats, talar man om kilobyte och megabyte.

I datorsammanhang blev det alltså så här:

(Förklaring: På samma sätt som 103 är en förkortning för 10 * 10 * 10, dvs 1000, så är 210 en förkortning för 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2, dvs 1024.)

Men bara ibland!

I datorsammanhang talar man alltså hela tiden om kilo som 1024 och mega som 1048576. Eller?

Nej, så enkelt är det inte!

För det första är det bara när det handlar om informationsmängder, som ju mäts i bitar och bytes, som kilo är 1024 och mega är 1048576. I alla andra sammanhang är det de vanliga 1000- och 1000000-betydelserna som gäller. Om man till exempel har en datakabel som är en kilometer lång, så är den förstås 1000 meter och inte 1024.

Det gäller även processorhastigheter. När man ska ange hur snabb en processor är, brukar man ange klockfrekvensen. Den mäts i hertz, som förkortas Hz och som betyder svängningar per sekund. När det gäller hertz, som till exempel i klockfrekvenser för processorer, så är det ju inte en informationsmängd, och därför har man alltid använt de gamla riktiga prefixen. Om man säger att en dator har en processor på en gigahertz (GHz), så är det alltid 1000000000 Hz man menar, inte 1073741824.

Men ibland betyder kilo 1000 och mega 1000000 även när det handlar om informationsmängder. Det gäller främst i två fall: hårddiskar och bandbredd.

Tillverkarna av hårddiskar brukar använda de vanliga SI-betydelserna på mega och giga. Antag att vi har en hårddisk som har plats för 107374182400 byte. 107374182400 byte är exakt lika med 100 gånger 1073741824, och i datorsammanhang brukar man alltså kalla det för 100 gigabyte. Men en hårddisk som har plats för 107374182400 byte brukar i reklamen beskrivas som att den innehåller 107 gigabyte, och inte 100 gigabyte. (Det är förstås för att det låter mer, och tillverkarna vill att deras hårddiskar ska verka större.)

Bandbredd i datornät brukar mätas i bitar per sekund. Bandbredden anger alltså hur mycket data man kan skicka per sekund. Här använder man också de vanliga betydelserna på prefixen. En megabit per sekund är alltså 1000000 bitar per sekund, inte 1048576. Två megabit per sekund används ibland som en gräns för vad som är bredband och vad som inte är det, och det motsvarar 2000000 bitar per sekund, inte 2097152.

Men nu blev det lite krångligt

När man pratar om datorer har man alltså två olika betydelser på varje prefix, och man måste veta i vilka sammanhang man ska använda de två olika betydelserna!

Exempel på krångligheter

För datamängder och primärminne är kilo 1024, men för hårddiskar är kilo 1000. På samma sätt är giga 1073741824 när vi pratar om datamängder och primärminne, men precis en miljard (1000000000) när vi pratar om hårddiskar. Om jag har exakt en gigabyte data, till exempel en film som jag laddat ner från Internet, så är det 1073741824 byte, och det får precis plats i ett primärminne på en gigabyte. Men om jag ska lagra filen på en hårddisk som är en gigabyte stor, så får den inte plats, utan jag måste köpa en hårddisk på 1,07 gigabyte!

Så en gigabyte är lika med 1,07 gigabyte!

Kort utvikning: I verkligheten måste man köpa en ännu större hårddisk, för på hårddisken lagras också diverse extrainformation, till exempel om var på disken datat har placerats. Därför kan man inte utnyttja hela diskstorleken för sina data. Samma sak gäller för primärminnet, som ju ska innehålla operativsystem, program med mera.

Mega är 1048576 när vi pratar om datamängder, men när vi pratar om bandbredd är mega precis en miljon (1000000). Om jag har en megabyte data, till exempel en (kort) MP3-fil som jag laddat ner från Internet, så är det 1048576 byte. Men hur lång tid tar det att ladda ner denna megabyte med data via ett datornät med bandbredden 1 megabit per sekund? Jo, först så måste vi förstås översätta mellan byte och bitar, och om en byte är 8 bitar så är 1048576 byte lika med 8388608 bitar. Och eftersom 1 megabit per sekund är en miljon bitar per sekund, tar det 8388608 delat med en miljon, dvs ungefär 8,4 sekunder, att överföra megabyten med data!

Om man tar innehållet i ett minne med storleken en megabit, och skickar det över ett datornät med hastigheten en megabit per sekund, tar det 1,05 sekunder.

Kort utvikning: I verkligheten tar det egentligen ännu längre tid, för på ett datornät skickas diverse extrainformation, till exempel adressen till den dator som datat ska till. Därför kan man inte utnyttja hela bandbredden för dataöverföring.

Megabyte används egentligen inte om datornät, så om man talar om hur många megabyte som man skickar per sekund så är det informationsmängder man menar, och alltså 220-betydelsen på mega. Vill man skicka en megabyte per sekund över ett datornät måste nätet alltså klara 8,4 megabit per sekund. Ska man skicka en kilobyte på en sekund behövs 8,192 kilobit per sekund.

Värre och värre

När man mätte datorernas minne i kilobyte så gjorde det kanske inte så mycket att det var oklart exakt vad en kilobyte var. 1024 är bara drygt 2 procent mer än 1000.

Men sen började man mäta minnet i megabyte. En megabyte kan vara 1000000 eller 1048576 byte, och 1048576 är nästan 5 procent mer än 1000000.

Numera mäter man ofta minnet i gigabyte. En gigabyte kan vara 1000000000 eller 1073741824. 1073741824 är mer än 7 procent mer än 1000000000.

Ju större datamängder vi talar om, desto mer ökar alltså skillnaden mellan de vanliga prefixen och de binära prefixen.

IEC:s binära enhetsprefix: Kibibyte! Mebibyte! Kabiffekopp!

Förr i världen var det bara dataexperter som behövde använda uttryck som megabit och gigabyte, och av dem kunde man förvänta sig att de höll reda på vad orden betydde, och när en gigabyte plötsligt blev 1,07 gigabyte.

Nu är det många fler som behöver hålla reda på sånt här. Det är inte bara dataexperter som har datorer, och till exempel beställer nytt minne. Hur mycket minne måste jag köpa för att få plats med en hundra megabyte stor bild i PhotoShop? Hur mycket hårddisk måste jag köpa?

För att minska förvirringen har man uppfunnit så kallade binära enhetsprefix, så att kilo skulle kunna gå tillbaka till att alltid vara 1000, och 1024 skulle heta något annat.

Det var i januari 1999 som IEC (International Electrotechnical Commission) standardiserade bland annat de här prefixen:

Notera att förkortningen för det binära kibi, Ki, skrivs med stort K, medan det vanliga kilo (k) skrivs med litet k. "bi" i prefixen kommer av "binär".

De binära enhetsprefixen är inte SI-standard, utan bara en rekommendation från IEC.

Är det nån som vet det här då?

De binära prefixen, kibi och så vidare, har ännu inte fått så stor spridning utanför specialistkretsar.

En gissning är att av Sveriges befolkning så är det kanske 50 procent som överhuvudtaget har en aning om vad en kilobyte är:

För att försöka göra en i alla fall lite säkrare uppskattning av hur spridda de nya binära prefixen blivit, gjorde jag 30 augusti 2004 en undersökning i korridoren där jag sitter på universitetet i Örebro. Urvalet är datalärare och datatekniker, alltså personer som det förmodligen är extremt mycket troligare att de kan det här än att folk i allmänhet kan det. Resultat:

Hur många byte
innehåller en kilobyte?
Vad är en kibibyte?
1024 Nåt nytt
1024 Nåt nytt
1024 Vet ej
1024 1000
Det beror på. 1000 eller 1024. 1024
1024 Vet ej
1024 Nåt nytt, eller nån som skrivit fel

Slutsatsen är förstås att de här nya binära prefixen än så länge är väldigt okända. Därför bör man vara försiktig med hur man använder dem. Men även om man kanske inte ska svänga sig med mebibyte hur som helst, ska man komma ihåg att de gamla vanliga megabyten inte brukar betyda en miljon byte, men att de gör det ibland, och att det kan vara ganska rörigt att reda ut vilket.

Sammanfattning