File binario
# File binario

Un file binario (a volte anche semplicemente "binario"), in Informatica, è un file che può contenere qualsiasi tipo di dati, codificato in codice binario a scopo di archiviazione o utilizzo (ad esempio file documenti che contengono testo formattato). Molti formati di file binari contengono parti che possono essere interpretate come testo, ma si distinguono per definizione dai file di testo veri e propri: un file binario è un file che non contiene solo semplice testo.

## Formati di file binari

I file binari sono solitamente concepiti come sequenze di byte: le singole cifre bit che costituiscono il file sono raggruppate in gruppi di otto. Questi file contengono byte che devono generalmente essere interpretati in modo diverso dai caratteri: i file compilati sono un esempio (i programmatori si riferiscono spesso al codice oggetto col termine "binario"), ma si può trattare di immagini, musica, dati compressi, o di qualsiasi altro tipo.

Alcuni file binari contengono header, cioè contenitori di metadata usati dai programmi associati ai file per riconoscerne ed interpretarne il contenuto. Ad esempio, un file GIF può contenere più immagini, e gli header sono utilizzati per identificare e descrivere ciascun blocco di dati.

## Gestione

Alcuni sistemi non permettono l'uso dei file binari (come la posta elettronica). Quindi, in questi casi, si rende spesso necessario convertirli e rappresentarli come file di testo semplici (ad esempio con la codifica Base64). Questo metodo ha il difetto di aumentare le dimensioni del file di circa il 30%, oltre a richiedere la decodifica a transazione ultimata.

Windows permette al programmatore di specificare un parametro per una chiamata di sistema che indichi se il file è testuale o binario. Diversamente, Unix e derivati trattano tutti i file come binari. Questo evidenzia come la distinzione tra i due tipi di file sia, da un certo punto di vista, arbitraria.

## Memorizzazione

Il file binario viene memorizzato in memoria con una sequenza di byte. Se vogliamo memorizzare il numero 1365, in memoria troveremo 2 byte, il primo contenente il numero 5 e l'altro contenente il numero 85. Prima di tutto bisogna trasformare il numero 1365 in base 2.

1365/2 = 682 con il resto di 1 682/2 = 341 con il resto di 0 341/2 = 170 con il resto di 1 170/2 = 85 con il resto di 0 85/2 = 42 con il resto di 1 42/2 = 21 con il resto di 0 21/2 = 10 con il resto di 1 10/2 = 5 con il resto di 0 5/2 = 2 con il resto di 1 2/2 = 1 con il resto di 0 1/2 = 0 con il resto di 1

Il numero in base 2 si legge da sotto a sopra dunque è 10101010101. Bisogna scomporlo in 2 byte da 8 cifre ciascuno aggiungendo degli 0 davanti al numero per far raggiungere al numero 8 bit.

ora trasformiamo il primo numero in base 10: $2^0$ + $2^2$ = 1 + 4 = 5

ora trasformiamo il secondo numero in base 10: $2^0$ + $2^2$ + $2^4$ + $2^6$ = 1 + 4 + 16 + 64 = 85

## Visualizzazione

Aprendo un file binario con un editor di testo, ogni gruppo di otto bit sarà puntualmente interpretato e tradotto come un carattere, e sarà visualizzata una sequenza completamente incomprensibile (a meno di coincidenze o inserti di testo nel file) di lettere. Se aperto con un diverso tipo di applicazione, questa interpreterà i singoli byte del file nel suo modo: potrebbe farvi corrispondere una cifra, e restituire una sequenza pressoché casuale di numeri; o, se il file viene riconosciuto come eseguibile, il computer cercherà in essi delle istruzioni in linguaggio macchina.

Si può usare un editor esadecimale che visualizza ogni byte del file come una cifra esadecimale, e poter così modificare il contenuto in modo diretto. Questa non è comunque un'operazione comune né conveniente, tranne che in casi particolari o specifici.

