Nell'informatica tecnica, i sistemi numerici sono importanti. Voglio dire, proprio come in qualsiasi altro campo. Devi sapere come rappresentare i tuoi numeri. Una rappresentazione numerica è quando prendi un insieme di numeri e lo trasformi in un insieme e fai operazioni con esso. Sembra terribilmente come gruppi in algebra astratta (ne abbiamo parlato in il post di informatica).
Ad ogni modo, prendi una serie di numeri o simboli e li numererai. L'insieme di questi simboli è chiamato alfabeto. Un esempio di alfabeto per il sistema decimale è:
Con questo alfabeto in base 10 rappresentiamo i nostri numeri nella nostra vita quotidiana.
Ora, questo non è l'unico sistema numerico utile esistente. Abbiamo anche:
Quindi denotiamo qualsiasi sistema di numeri con base "b" come
Fatto divertente!
Ciascuno di questi sistemi ha il proprio uso e ovviamente vantaggi e svantaggi. Per l'informatica un sistema esadecimale è un modo molto utile per compattare una grande quantità di combinazioni all'interno di un insieme molto piccolo di caratteri.
Ad esempio, quando si utilizza il sistema esadecimale possiamo impacchettare 256 numeri in due caratteri. Anche se ci vorrebbero 128 caratteri se parliamo di bit o nel sistema binario. Ora, usiamo il binario nei computer perché abbiamo bisogno di un modo per trasmettere i segnali attraverso la corrente elettrica. Teoricamente potremmo avere più di due segnali, ma non va bene. Questo perché anche piccole fluttuazioni nei campi elettromagnetici intorno o nel vostro ambiente possono "capovolgere" un po 'con stati intermedi, quindi cerchiamo di tenerli il più distanti possibile, in modo che anche con piccole fluttuazioni, i nostri computer non vadano in crash. Questo è fondamentale ed è stato uno dei fallimenti dei primi computer. Fondamentalmente l'affidabilità e il costo sono il driver principale per l'utilizzo di solo 0 e uno.
Il computer ENIAC ha utilizzato 10 livelli di segnale! Il che ovviamente richiede un livello di precisione molto alto e operazioni di base come l'aggiunta sono molto complicate da eseguire ...
Numeri con lunghezza finita
Sì, in matematica puoi fare quello che vuoi. E quindi puoi avere numeri che hanno una lunghezza prestabilita. Normalmente ignoriamo sempre gli zeri a sinistra in un numero. Ma un numero con una lunghezza finita ne una base b può essere indicato come:
Quindi il numero 183 sarebbe indicato come
** Questo non è necessariamente il modo corretto di rappresentare i numeri **
Rappresentazione numerica naturale
Attenzione: diventerà molto matematico e complicato!
Let b? N dove b> 1, quindi ogni numero naturale Z dove 0? z? b ^ n -1 è rappresentabile come una parola di lunghezza n via
fino a [eq 1.]
E
Dove i = 0,1,… .., n-1
Ok ora cosa? Questo è espresso in parole matematiche. In parole leggibili dall'uomo guarda l'eq. 1. Hai una somma per rappresentare qualsiasi numero z in qualsiasi sistema che inizia con n-1 e termina con i = 0. Abbiamo discusso n in precedenza come la lunghezza massima. b è la base, quindi la base 10 o la base 2 per esempio. Questa è una specie di notazione scientifica. Vediamo un esempio per la base 10:
Sostituiamo n-1 dall'eq. Da 1 a 3, perché ci sono 4 cifre sul numero. Quindi n = 4-1 = 3.
Quindi per un numero binario 111011
Spiegato in modo più semplice e con meno matematica:
Numero massimo che puoi rappresentare
Aggiungiamo -1 perché vogliamo rappresentare anche Zero perché stiamo parlando di numeri interi positivi. Quindi in esadecimale con 2 simboli possiamo rappresentare:
Da zero fino a 31.
Conversione inversa
Ok bello, ora so come convertire in qualsiasi altro numero da decimali. Ora come faccio a convertire il decimale in binario (base 2) o in base b?
Convertiamo 47 in binario
47/2 = 23 | Riposo 1 |
23/2=11 | Riposo 1 |
11/2 = 5 | Riposo 1 |
5/2 = 2 | Riposo 1 |
2/2 = 1 | Riposo 0 |
1/2 = 0 | Riposo 1 |
Inizi fondamentalmente dividendo il numero per la base. Finché non si raggiunge un risultato uguale a zero. Ora che hai il tavolo lo leggi dal basso verso l'alto! Quindi il risultato è 101111 in base 2. Tutto questo può essere descritto attraverso lo schema di Horner o il metodo di Horner, un'equazione molto molto complessa che ci aiuta a convertire da qualsiasi base a qualsiasi base senza passaggi intermedi. Ma questo è davvero molto complicato, quindi ci limiteremo alle basi.
Metodo Horners
Poiché i computer hanno tempi difficili con i polinomi, doveva esserci un metodo per convertire da esadecimale o binario a decimale, giusto? Si assolutamente. Come abbiamo visto, qualsiasi conversione può anche essere trasformata in un polinomio. Controlliamo la nostra prima equazione:
Quale possiamo semplificare, giusto? Poiché ogni singola z viene moltiplicata per a b. E poi invece di risolvere un polinomio complesso, stiamo semplicemente moltiplicando per x. Cerchiamo prima di riordinare l'equazione in qualcosa di simile:
Ora il metodo di Horner è molto complesso ma serve per risolvere polinomi di grado elevato! E se guardiamo la nostra equazione, il nostro polinomio è di grado i. Quindi l'utilizzo del metodo di Horner aiuta il computer a risparmiare tempo e generalizzare. Poiché vogliamo che qualsiasi equazione sia il più generale possibile.