In questa lezione impari a
- RESTO(), TRONCA(), POTENZA() per calcolare i singoli bit
- CONCATENA() per unire i bit in una stringa
- SOMMAPRODOTTO() o STRINGA.ESTRAI() per il percorso inverso
- un pulsante con una macro per resettare i dati
Ogni giocatore ha un badge d'accesso al server del torneo: un numero da 0 a 255. Costruisci il convertitore decimale ↔ binario.
Cosa significa MSB e LSB?
MSB = Most Significant Bit (bit più significativo): è il bit più a sinistra, quello che "pesa" di più. LSB = Least Significant Bit (bit meno significativo): è il bit più a destra, quello che pesa di meno.
È la stessa logica delle cifre di un numero decimale: in 173, l'1 (centinaia) pesa molto più del 3 (unità). In binario i pesi sono potenze di 2 invece che di 10:
| bit | 7 (MSB) | 6 | 5 | 4 | 3 | 2 | 1 | 0 (LSB) |
|---|---|---|---|---|---|---|---|---|
| peso | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| valore | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
Il bit 7 (MSB) contribuisce con 128, il bit 0 (LSB) contribuisce con 1 (o 0 se il bit è spento): sommando i pesi dei bit accesi si ottiene 128+32+8+4+1 = 173. Ecco perché nel foglio si parte "da 7 (MSB) a 0 (LSB)": prima si calcola il bit che pesa di più (colonna B), e si finisce con quello che pesa di meno (colonna I).
Da badge decimale a binario (8 bit)
In A2 inserisci il numero decimale del badge (es. 173, un numero fra 0 e 255).
Nelle colonne B → I calcoliamo i bit, da 7 (MSB) a 0 (LSB). In B2 (bit 7, valore 2⁷=128):
In C2 (bit 6, 2⁶=64) cambi solo l'esponente:
...e così via fino a I2 (bit 0, esponente 0).
Unire i bit nella stringa binaria
In una cella scelta (es. J2) concatena i bit calcolati:
Per 173 questa formula restituisce la stringa 10101101.
Da binario a decimale
Opzione 1 — se hai già i bit in celle separate (B2:I2):
E2*POTENZA(2;4) + F2*POTENZA(2;3) + G2*POTENZA(2;2) +
H2*POTENZA(2;1) + I2*POTENZA(2;0)
Opzione 2 — partendo da una stringa binaria in una cella (es. A2 = "10101101"):
VALORE(STRINGA.ESTRAI(A2;2;1))*POTENZA(2;6) + ... +
VALORE(STRINGA.ESTRAI(A2;8;1))*POTENZA(2;0)
Scorciatoia: crea una riga con i pesi
128, 64, 32, 16, 8, 4, 2, 1e usa=SOMMAPRODOTTO(B2:I2; PESI)per evitare di scrivere otto addendi a mano.
Anteprima del risultato
| A | B | |
|---|---|---|
| 2 | DECIMALE | BINARIO |
| 3 | 173 | 10101101 |
Pulsante RESET con macro
Per far ripartire da zero il convertitore (utile prima di dare il foglio a un nuovo giocatore):
- Inserisci → Disegno, crea un rettangolo con scritto "RESET" → Salva e chiudi
- Clicca sui tre puntini sopra il disegno inserito → Assegna uno script
- Vai su Estensioni → Apps Script e scrivi una funzione che svuota le celle di input
function resetBadge() {
var foglio = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName("Codice Segreto");
foglio.getRange("A2").clearContent(); // decimale → binario
foglio.getRange("A7").clearContent(); // binario → decimale
}
Torna sul disegno "RESET" → tre puntini → Assegna uno script → scrivi resetBadge (senza parentesi).
Esercizi in più
Prima con carta e penna, poi controlla con il foglio Codice Segreto.
⭐ Facile
Esercizio 1 – A mano. Converti a mano in binario a 8 bit i numeri 13, 100 e 255. Poi verifica con il foglio.
Suggerimento
13 = 00001101 · 100 = 01100100 · 255 = 11111111
⭐⭐ Medio
Esercizio 2 – La funzione già pronta. Cerca tra le funzioni di Fogli quella che converte da decimale a binario (in inglese si chiama DEC2BIN) e confronta il risultato con il tuo foglio. Che differenza c'è negli zeri iniziali?
⭐⭐ Medio
Esercizio 3 – Esadecimale. Dividi gli 8 bit in due gruppi da 4: ogni gruppo è una cifra esadecimale (da 0 a F). Scrivi in esadecimale i numeri dell'esercizio 1.
Suggerimento
13 = 0D · 100 = 64 · 255 = FF
⭐⭐⭐ Sfida
Esercizio 4 – Fuori range. Se il badge inserito è maggiore di 255, al posto dei bit deve comparire "Fuori range: massimo 8 bit". Usa SE.