# Binair bestand

Een binair bestand is een computerbestand waarin elke positie alle denkbare bitcombinaties kan bevatten (256 verschillende bij gebruik van een 8-bitscodering).
Het tegenovergestelde is het tekstbestand. In een tekstbestand komen alleen bitcombinaties voor die corresponderen met tekens die kunnen worden afgedrukt of afgebeeld, of die als (eenvoudige) stuurtekens zoals "nieuwe regel", "nieuwe pagina" of "tab" zijn gedefinieerd. Omdat deze bestanden geen geavanceerde opmaakinstructies bevatten (bijvoorbeeld om van lettergrootte te veranderen) worden ze ook wel "platte" tekstbestanden genoemd.
Bestanden die met tekstverwerkingsprogramma's worden gemaakt en verwerkt vertonen de kenmerken van binaire bestanden, omdat ze veel meer opmaakinstructies kunnen bevatten, en die kunnen wel elke binaire waarde aannemen. Bestanden waarin schrifttekens voorkomen die niet direct in het Latijnse alfabet voorkomen (zoals diakritische tekens of Cyrillische lettertekens) dienen eveneens als binaire bestanden beschouwd te worden - zelfs als die bestanden alleen tekst bevatten.

## Binaire formaten

Binaire bestanden worden gewoonlijk gezien als een opeenvolging van bytes (groepen van acht binaire cijfers of bits). Binaire bestanden bevatten typisch bytes die niet als tekstkarakters geïnterpreteerd moeten worden, maar die iets anders moeten voorstellen. Gecompileerde programma's zijn kenmerkende voorbeelden: gecompileerde programma's staan op de computer opgeslagen in de vorm van binaire bestanden. De inhoud van die bestanden is niet door de mens te lezen, maar kan door een computer geïnterpreteerd en uitgevoerd worden als programma. Gecompileerde code wordt door programmeurs dan ook vaak binaries genoemd. Binaire bestanden kunnen echter evenzeer beelden, geluiden, gecomprimeerde versies van andere bestanden en dergelijke bevatten; gegevens van om het even welk type kan worden gecodeerd als binair bestand.
De interne structuur van binaire bestanden hangt volledig af van de keuze van de programmeur. In sommige bestanden definieert men headers en blokken metadata. Deze blokken kunnen door een computerprogramma gebruikt worden om meer informatie te verkrijgen over de inhoud van het binaire bestand, en om de inhoud verder te kunnen interpreteren.

## Omgaan met binaire bestanden

Sommige computersystemen of technologieën kunnen alleen omgaan met tekstbestanden, bestanden die een beperkt aantal teksttekens bevatten, en niet met uitgebreide binaire bestanden. Een voorbeeld is e-mail, dat enkel berichten met teksttekens aanvaardt. Wil men per e-mail andere gegevens meesturen, dan moeten deze naar een platte tekstvoorstelling omgezet worden, bijvoorbeeld met Base64-codering. Deze codering heeft als nadeel dat de bestandsgrootte met 30% toeneemt, en dat de ontvanger het bestand moet decoderen.
In Microsoft Windows kan een programmeur via een parameter van sommige systeemaanroepen aangeven of een bestand binair of tekstueel is, in Unix-systemen is dit niet het geval en worden alle bestanden als binair behandeld. Dit geeft aan dat het onderscheid tussen binaire en tekstuele bestanden afhankelijk is van het besturingssysteem.

## Weergeven van binaire bestanden

In principe dienen binaire bestanden weergegeven te worden met computerprogramma's die ervoor gemaakt zijn om te kunnen omgaan met het type bestand in kwestie, zoals foto's of geluiden. Wanneer men deze binaire bestanden in een gewone eenvoudige teksteditor opent, wordt elk groepje van acht bits (byte) gewoonlijk vertaald naar één enkel tekstteken dat hiermee overeenkomt, en gewoonlijk ziet men dan een onbegrijpelijke opeenvolging van tekens. Wanneer men met nog een ander programma het bestand zou openen, dan zou het programma proberen de opeenvolging van bits op zijn eigen manier te interpreteren, bijvoorbeeld een reeks getallen, een reeks kleuren, een stuk computercode, enz.
Wanneer men toch een duidelijk zicht wel hebben op de binaire inhoud van een bestand, dan kan een hex-editor gebruikt worden. Deze laat toe de bytes van het bestand te tonen met hun hexadecimale waarde en mogelijkerwijs ook met de decimale, binaire of ASCII-waarde. Men kan dan elke byte afzonderlijk bewerken.