Vai al contenuto

Codice Segreto

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:

bit7 (MSB)6543210 (LSB)
peso1286432168421
valore10101101

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):

=RESTO(TRONCA(A2 / POTENZA(2;7));2)

In C2 (bit 6, 2⁶=64) cambi solo l'esponente:

=RESTO(TRONCA(A2 / POTENZA(2;6));2)

...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:

=CONCATENA(B2;C2;D2;E2;F2;G2;H2;I2)

Per 173 questa formula restituisce la stringa 10101101.

Da binario a decimale

Opzione 1 — se hai già i bit in celle separate (B2:I2):

=B2*POTENZA(2;7) + C2*POTENZA(2;6) + D2*POTENZA(2;5) +
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;1;1))*POTENZA(2;7) +
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, 1 e usa =SOMMAPRODOTTO(B2:I2; PESI) per evitare di scrivere otto addendi a mano.

Anteprima del risultato

AB
2DECIMALEBINARIO
317310101101

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.