Sistemi numerici e basi

I sistemi di basi come il binario e l’esadecimale sembrano un po’ strani all’inizio. La chiave è capire come i diversi sistemi “ticchettano” come un contachilometri quando sono pieni. La base 10, il nostro sistema decimale, “ticchetta” quando arriva a 10 elementi, creando una nuova cifra. Aspettiamo 60 secondi prima di “ticchettare” su un nuovo minuto. L’esadecimale e il binario sono simili, ma hanno un ticchettio ogni 16 e 2 elementi, rispettivamente.

Prova a convertire i numeri in esadecimale e binario qui:

All’epoca: Numeri Unari

All’epoca non avevamo sistemi di base! Era in salita in entrambe le direzioni, attraverso la neve e il caldo torrido. Quando volevi contare uno, scrivevi:

l

Quando volevi 5, scrivevi

lllll

E chiaramente, 1 + 5 = 6

l + lllll = llllll

Questo è il modo più semplice di contare.

Entrare i romani

Nei numeri romani, due era uno, due volte. Tre era uno, tre volte:

one = Itwo = IIthree = III

Tuttavia, decisero che potevano fare meglio della vecchia tradizione delle linee nella sabbia. Per cinque, potremmo usare V per rappresentare lllll e ottenere qualcosa come

l + V = Vl

Non male, eh? E naturalmente, ci sono molti altri simboli (L, C, M, ecc.) che si possono usare.

Il punto chiave è che V e lllll sono due modi di codificare il numero 5.

Dare ad ogni numero un nome

Un altro passo avanti è stato capire che ogni numero può essere un concetto distinto. Piuttosto che rappresentare il tre come una serie di uno, dargli un proprio simbolo: “3″. Fai questo da uno a nove, e ottieni i simboli:

1 2 3 4 5 6 7 8 9

I romani erano vicini, molto vicini, ma davano solo simboli unici a 5, 10, 50, 100, 1000, ecc.

Usa la tua posizione

Ora chiaramente, non puoi dare ad ogni numero il suo simbolo. Sono semplicemente troppi.

Ma notate un’intuizione sui numeri romani: usano la posizione dei simboli per indicare il significato.

IV significa “sottrarre 1 da 5″

e VI significa “aggiungere 1 a 5″.

Nel nostro sistema numerico, usiamo la posizione in un modo simile. Aggiungiamo sempre e non sottraiamo mai. E ogni posizione è 10 in più di quella precedente.

La nostra scelta della base 10

Perché abbiamo scelto di moltiplicare per 10 ogni volta? Molto probabilmente perché abbiamo 10 dita.

Un punto di cui rendersi conto è che avete bisogno di abbastanza cifre per “riempire” fino al numero successivo. Lasciatemelo dimostrare.

Se vogliamo far girare il contachilometri ogni 10, per così dire, abbiamo bisogno di simboli per i numeri da uno a nove; non abbiamo ancora raggiunto il dieci. Immaginate i numeri come un ticchettio lento verso l’alto – a che punto girate la prossima unità e ricominciate da zero?

Inserite zero

E cosa succede quando raggiungiamo il dieci? Come dimostriamo che vogliamo esattamente un “dieci” e niente nella colonna degli “uno”?

Utilizziamo lo zero, il numero che non esiste. Lo zero è un bel concetto, è un segnaposto, un vuoto, uno spazio e molto di più. Basta dire che lo zero è una delle grandi invenzioni di tutti i tempi.

Lo zero ci permette di avere un segnaposto vuoto, cosa che i romani non avevano. Guardate come sono ingombranti i loro numeri senza di esso.

Il famoso romanzo di George Orwell “1984″ sarebbe “MCMLXXXIV”! Scorre bene sulla lingua, vero?

Considerando altre basi

Ricorda che abbiamo scelto di far girare il nostro contachilometri ogni dieci. Il nostro conteggio si presenta così:

123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)

E se facessimo il conto a 60, come facciamo per i secondi e i minuti?

1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)

Tutto bene finora, giusto? Notate che usiamo i due punti (:) per indicare che siamo a una nuova “cifra”. In base 10, ogni cifra può stare per conto suo.

Prova la base 16

Se vogliamo la base 16, potremmo fare qualcosa di simile:

123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)

Tuttavia, non vogliamo scrivere numeri esadecimali con la notazione dei due punti (anche se potremmo). Preferiamo cucinare simboli separati per 10-15 in modo da poter scrivere solo numeri come siamo abituati a fare. Abbiamo finito i numeri (1-9 già usati, con lo 0 come segnaposto) quindi abbiamo bisogno di altri simboli. Potremmo usare delle linee a ghirigori o altre forme, ma la convenzione è di usare lettere, in stile romano. Proprio come il 5 è diventato V, i programmatori usano le lettere A-F per ottenere abbastanza cifre fino a 16. Cioè,

123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)

Ahah! Ora possiamo usare una cifra per “posto”, e sappiamo che 10 in realtà significa che abbiamo “spuntato 16″ una volta.

20 significa che abbiamo spuntato 16 due volte (32).

25 significa che abbiamo spuntato 16 due volte (dandoci 32) e abbiamo fatto un 5 extra. Il totale è 32 + 5 = 37.

Rassegna veloce

Con me finora? Questo è abbastanza figo, vero? Possiamo contare in qualsiasi sistema che vogliamo. Notate anche che la base 16 è più “efficiente in termini di spazio”, nel senso che possiamo scrivere un numero come 11 in una sola cifra: B.

La base 16 non è poi così diversa dalla base 10, ci mettiamo solo più tempo a riempirla.

Il meraviglioso mondo del binario

Abbiamo visto molti sistemi di base, dall’unario troppo semplice, ai numeri romani non strutturati, alla base 10 costante e alla base 16 compatta.

Cosa c’è di bello nel binario? Nello spirito di mantenere le cose semplici, è il sistema numerico più semplice che ha il concetto di “ticchettio”. Unario, dove scriviamo solo 1, 11, 111… continua all’infinito. Binario, con due opzioni (1 e 0) sembra questo:

1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…

e così via.

Perché il binario è così semplice, è molto facile da costruire in hardware. Avete solo bisogno di cose che possono accendersi o spegnersi (che rappresentano 1 e 0), piuttosto che cose che hanno 10 possibili stati (per rappresentare il decimale).

Perché è così semplice, il binario è anche resistente agli errori. Se il vostro segnale è “parzialmente acceso” (diciamo 0,4), potete assumere che sia uno zero. E se è per lo più acceso (diciamo 0,8), allora puoi assumere che sia un 1. Se stai usando un sistema con 10 stati possibili, è difficile dire quando si è verificato un errore. Questo è uno dei motivi per cui i segnali digitali sono così resistenti al rumore.

Altri esempi di basi

Utilizziamo altre basi tutto il tempo, anche cambiando dinamicamente le basi. Di solito non ci pensiamo in questo modo:

Ore, minuti, secondi: 1:32:04

  • Sappiamo che questo è 1 ora, 32 minuti, 4 secondi. In secondi, questo è 16060 + 32*60 + 4.

Piedi e pollici: 3′ 5″

  • Questo è 3 piedi, 5 in o 3 * 12 + 5 pollici.

Libre e once: 8 lbs, 5 oz

  • Siccome una libbra è 16 oz, questo è 8 * 16 + 5 oz. Abbiamo usato un sistema numerico in base 16 per tutto il tempo!

Pensieri parziali

“10″ in qualsiasi sistema numerico indica la base, e significa che abbiamo spuntato una volta. 10 in binario significa due, 10 in decimale significa dieci, e 10 in esadecimale è sedici.

Come si fa a tenere separati questi numeri? I programmatori spesso scrivono “0b” davanti ai numeri binari. Così 2 in binario è

0b10

Similmente, scriveranno 0x davanti ai numeri esadecimali. Così 16 in esadecimale è:

0×10

Se non ci sono simboli (0b o 0x) davanti, assumiamo che sia base 10, un numero regolare.

Ora vai avanti e goditi la tua nuova conoscenza!

Altri post in questa serie

  1. Sistemi numerici e basi
  2. La guida rapida ai GUID
  3. Capire la radice quadrata inversa veloce di Quake
  4. Una semplice introduzione al computer Networking
  5. Swap two variables using XOR
  6. Understanding Big and Little Endian Byte Order
  7. Unicode and You
  8. A little diddy about binary file formats
  9. Sorting Algorithms

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.