De byte (= 8 bits) is de basis-eenheid waarmee gewerkt kan worden in een computer. Dat is de reden waarom er 256 karakters bestaan in het ASCII karakterset (een byte kan maximaal 256 verschillende waarden aannemen). Het is tevens de hoeveelheid data die 1 geheugenadres kan bevatten.
In computers wordt echter ook gesproken over de "
Word-lengte". Dat is het aantal bits dat als één geheel wordt verwerkt door die computer: in 1 kloktik wordt dan als het ware (minimaal) dat aantal bits verwerkt. In een 32-bit computer is de Word-lengte (raad je het al?!) 32 bits en in een 64-bit computer is dat dan 64 bits.
Hoe groter de Word-lengte, hoe meer data per kloktik verwerkt kan worden door de processor. Met 32 bits kunnen 4294967296 individuele waarden voorgesteld worden: als je getallen gebruikt die groter zijn dan dat in berekeningen, dan moeten die berekeningen opgesplitst worden zodat met je uiteindelijk met getallen rekent die in 32 bits passen (gewoonlijk kost dat zo'n 3 kloktiks als ik me niet vergis). Met 64 bits kunnen 18446744073709551616 individuele waarden weergegeven worden: de computer kan dus met veel grotere getallen rekenen wat de snelheid verhoogt. Hetzelfde geldt met komma-getallen: met 64 bits kan een groter aantal cijfers na de komma weergegeven worden dan met 32 bits: daardoor kan een 64-bit computer dus eveneens een hogere performance vertonen wanneer met getallen met grote nauwkeurigheid gewerkt wordt.
Iedere geheugenlocatie in een computer wordt "ge-adresseerd": iedere byte geheugen dat de computer kan gebruiken krijgt daartoe een uniek nummer toegewezen. Welnu, ook de lengte van dat geheugenadres verandert wanneer je van een 32-bit naar een 64-bit computer gaat.
Op een 32-bit computer heb je 2^32 adressen ter beschikking. Hieruit kan je afleiden dat een 32-bit computer maximaal 4 GB RAM kan aanspreken (2^32 x 1 byte).
Op een 64-bit computer heb je 2^64 adressen wat resulteert in 16777216 TB dat adresseerbaar is. Op dit ogenblik kunnen de 64-bit desktop computers echter maximaal 48 bits van die 64 effectief gebruiken om geheugen te adresseren (dat resulteert dan in 256 TB max).
Hoe vertaalt dit zich nu naar een OS en software? Programma's die je uitvoert verwijzen continu naar geheugenlocaties: de ene maal om een stuk data op te laden, de andere maal om naar het volgend stuk code te verwijzen dat moet uitgevoerd worden. Die verwijzingen noemen we "pointers". Om op een 64-bit computer te werken, moeten die pointers 64 bits lang zijn (als ze korter waren, dan kan je geen gebruik maken van al het geheugen dat de computer ter beschikking heeft). Alleen al om die wijziging in "pointers" heb je nood aan een aparte versie van je programma's en drivers.
Het is technisch mogelijk om 32-bits programma's op een 64-bit OS te draaien. In dat geval draaien de programma's echter in "emulatie-mode": ze kunnen dan echter nooit over meer dan 4 GB RAM beschikken (omdat ze het extra geheugen toch niet kunnen aanspreken) en kunnen ook niet genieten van de extra performance van een 64-bit computer.