Home    Forum    Cerca    FAQ    Iscriviti    Login


Nuova Discussione  Rispondi alla Discussione 
Pagina 1 di 1
 
 
[Guida] Il Concetto Astratto Dei Numeri. Il Codice Binario C
Autore Messaggio
Rispondi Citando   Download Messaggio 
Messaggio [Guida] Il Concetto Astratto Dei Numeri. Il Codice Binario C 
 
l pensiero virtuale e il pensiero reale:

Prima di addentrarmi nei particolari e quindi rendere tutto estremamente complicato (si perchè per molti, vi avviso, non sarà assolutamente facile) vorrei farvi capire alcuni concetti chiave.
Per prima cosa quando si parla di linguaggio binario dobbiamo stare attenti ai virtuosismi psichedelici della nostra mente che, non essendo in grado di concepire un concetto astratto, crea nel suo insieme di scariche tra un neurone e l’altro dei piccoli cortocircuiti e ci fa vedere oltre il reale, cioè nell’irreale. L’irreale è una fonte inesauribile, ma ricordiamo che per comprendere l’informatica dobbiamo sforzarci di rimanere con una logica ferrea.
Molti di noi sono convinti che guardando il monitor senza toccare la tastiera e il mouse sia tutto assolutamente immobile, ma non è vero. I nostri occhi non sono in grado di percepire il velocissimo refreshing di frequenza dettato da ferree leggi matematiche, ma sono bensì in grado di captare quello che noi chiamiamo “il reale” o semplicemente “quello che vediamo”.
Il computer è pura illusione. Tutta la dinamica di base, le frequenze, il clocking, i miliardi di calcoli sono a noi nascosti da una parvenza di normalità…

Anni fa, quando andavo ancora alle superiori, il mio professore di informatica, dopo aver fatto l’appello fece una domanda a bruciapelo all’intera classe: “Secondo voi, quello che vedete al monitor del Computer è reale?”. La classe fu immersa da un silenzio tombale, molti si guardarono in faccia stralunati. Non so cosa pensassero tutti i miei compagni, ma quel giorno vidi che a nessuno pareva logica la domanda.
E invece, quella frase enigmatica nascondeva in sé una moltitudine di risposte e verità. Esiste un pensiero virtuale e uno reale. Il pensiero virtuale è un concetto astratto, fuori da qualsiasi schema logico penseremmo, e invece no, o almeno per quanto riguarda i calcolatori. Il pensiero reale è invece quello che noi possiamo percepire con i nostri sensi.
Torniamo a quello che ho definito “pensiero virtuale”.
Se noi ci pensiamo, i computer cercano di riprodurre una realtà (attenzione, non la verità ma la REALTA’) introducendo l’utente con semplici ragionamenti basati su schemi razionali di uso quotidiano, ad interagire con sé stesso.
E’ indispensabile CREDERE di fare una cosa quando si parla di computer, altrimenti il concetto crolla e forse anche la magia che vi gravita attorno.
Tornando alla fatidica domanda, se avete risposto in modo convinto “SI, è reale” allora significa che siete in grado di cogliere soltanto la parte REALE dell’informatica, mentre se avete risposto “No, non è reale”, siete vicini a comprendere la più intima scintilla che anima le macchine.
Per la cronaca, a molti di voi sembrerà assurdo, ma quel giorno almeno il 90% dei miei compagni ha risposto “Si, è reale”.

Il concetto astratto dei numeri

Esattamente come accade per i computer, dove tutto ciò che vediamo è virtuale (al di fuori ovviamente dell’hardware che lo compone), anche nella nostra realtà utilizziamo un sistema di calcolo basato su un concetto astratto. La stessa matematica è un concetto che non può essere compreso se non viene prima schematizzato. Ma anche qui, l’illusione dell’uomo di vedere nei numeri la verità è un concetto astratto.
Faccio un esempio semplicissimo. L’uomo conta in base 10 (questo deriva dal fatto che i primi calcoli effettuati in epoche remote erano eseguiti sulle dita), ma chi dice che la base 10 sia quella giusta? Potremmo allora contare in base 4, o in base 5 ed effettuando semplicissimi calcoli avremmo risultati differenti, ma con un comune denominatore: le proporzioni.
es:

- Calcolo in base 10

12 è uguale a: 1decina + 2 unità

- Calcolo in base 4

12 è uguale a: 3 quartine

Semplice no? Forse vi aspettavate chissà cosa, invece tutto vi risulta perfettamente comprensibile perché utilizzate una logica che permette di scomporre un numero e di pensare ad esso con qualsiasi tipo di base vogliate calcolarlo. Proporzioni perfette…

Adesso vi chiederete “perché allora ci viene insegnato fin da piccoli a calcolare tutto in base 10 ?”. Risposta: perché è uno standard senza il quale non potremmo capirci l’un l’altro. Questo concetto è poi alla base degli stessi protocolli di rete che si basano su uno stesso linguaggio per far si che diverse piattaforme abbiano modo di comunicare tra loro con schemi precisi e assolutamente identici.

Sistemi matematici

Come detto prima, noi utilizziamo una scala di valori compresa da 1 a 0 (..8..9..0). Questi numeri che impariamo a conoscere fin dall’infanzia, li assoceremo con ogni probabilità all’abaco che la maestra piazzava sulla cattedra per farci capire la disposizione delle unità, delle decine, delle centinaia le migliaia, e così via, all’infinito. Sappiamo per certo che il numero 4672 si scompone in:

4 migliaia + 6 centinaia + 7 decine + 2 unità.

Quanto ci siamo domandati prima è forse rimasto in sospeso, e cioè come funziona questo tipo di calcolo? In realtà esistono infiniti numeri ed infinite basi su cui calcolare scale di valori. Se a uno viene semplice contare in base 6798 può farlo benissimo (anche se non credo sia poi così pratico…), l’importante è rispettare SEMPRE la scala dei valori e le loro proporzioni. Quindi, la scala dei valori è prodotta dalla progressiva elevazione alla potenza della base.

Il concetto di BINARIO

Ritorniamo al vecchio concetto di reale e virtuale. I numeri sono solo dei disegnini se vogliamo andare nel dettaglio che rappresentano in modo schematico il nostro pensiero matematico. Con i computer accade qualcosa di leggermente differente.
C’è chi dice che “i computer sono in grado di comprendere solo due numeri: 1 e 0”.
Bhè, non è vero. Anche il concetto “capire” è sbagliato, ma su questo sorvoliamo, in realtà i calcolatori sono in grado di interpretare quello che NOI percepiamo come 1 e 0, anche se per i computer corrispondono a due concetti differenti:

0 = Negativo (o spento)
1 = Positivo (o acceso)

Ecco di seguito la scala di valori da 0 a 10 con la loro trasposizione binaria:
0 = 0
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000
9 = 1001
10 = 1010

Quindi, quando noi digitiamo il numero 5 sulla tastiera, il computer lo interpreterà come una sequenza di acceso/spento/acceso cioè 101, se digitiamo 9 interpreterà invece 1001 e così via…

Ma in definitiva cosè il sistema binario? Eccovi la definizione da imparare a memoria ovviamente…
Il sistema binario è un sistema posizionale in base 2 nel quale ogni unità equivale a 2 volte l’unità dell’ordine immediatamente inferiore, sempre nella quale sono impiegate solo due cifre: 0 e 1.

Come si calcola?
Abbiamo visto che il sistema binario si basa su sequenze di due sole cifre (0 e 1) e quindi la base di calcolo sarà 2.
Per incasinarvi ancora di più (hehehe) vi farò un esempio pratico: scomponiamo il numero 220, o meglio, riscriviamolo in formato binario.
Avremo quindi una scala di valori come la seguente:

Base = 2^0 = 1
Base = 2^1 = 2
Base = 2^2 = 4
Base = 2^3 = 8
Base = 2^4 = 16
Base = 2^5 = 32
Base = 2^6 = 64
Base = 2^7 = 128
Base = 2^8 = 256
Base = 2^9 = 512
..e così via…
Ora prendiamo il nostro numero 220 e scomponiamolo nel seguente modo:

220 non può essere rappresentato come 2^9 perché il suo risultato è di gran lunga superiore all’intero 220, quindi nemmeno 2^8. Prendiamo allora 2^7 che da come risultato 128.
Avremo:

2^7 (12 quindi 220 – 128 = 92 [Valore] -> 1
2^6 (64) sta a 92 = 1 volta con il resto di 28 [Valore] -> 1
2^5 (32) sta a 28 = 0 volte con il resto di 28 [Valore] -> 0
2^4 (16) sta a 28 = 1 volta con il resto di 12 [Valore] -> 1
2^3 ( sta a 12 = 1 volta con il resto di 4 [Valore] -> 1
2^2 (4) sta a 4 = 1 volta con resto 0 [Valore] -> 1
2^1 (2) sta a 0 = 0 volte con resto 0 [Valore] -> 0
2^0 (1) sta a 0 = 0 volte con resto 0 [Valore] -> 0

Avremo quindi il nostro numero in sistema decimale che corrisponde a 220
e in binario a 11011100, semplice no?

La classica “prova del 9” per vedere se il nostro calcolo è giusto è quella di sommare tutte le potenze che hanno dato come risultato il valore 1. Quindi prenderemo la scala generata in questo modo:

2^7 (12 [Valore] -> 1
2^6 (64) [Valore] -> 1
2^5 (32) [Valore] -> 0
2^4 (16) [Valore] -> 1
2^3 ( [Valore] -> 1
2^2 (4) [Valore] -> 1
2^1 (2) [Valore] -> 0
2^0 (1) [Valore] -> 0

Avremo in decimale:
220 = (2^7)+(2^6)+(2^4)+(2^3)+(2^2)
220 = 128+64+16+8+4

Come potete vedere la somma di tutte le potenze in base 2 che hanno dato come risultato il valore 1 danno come risultato finale proprio 220.
Con questo sistema si è potuto far “comprendere” ai calcolatori tutto quello che oggi noi possiamo vedere attraverso i monitor, cioè attribuendo al loro linguaggio basato su quello che poi al lato pratico altro non è che un flusso di corrente intermittente con valore 1 e 0, acceso e spento.
Questa “intermittenza” ha un suo nome specifico che vedremo tra poco.

——- Piccola parentesi ——-
Altri sistemi di numerazione
Nel nostro “mondo reale” utilizziamo il sistema di calcolo decimale, cioè quello basato da una sequenza numerica da 1 a 9 più lo 0. Ogni unità vale 10 volte l’unità inferiore.
Abbiamo visto il sistema di calcolo binario, ma esistono ancora altri sistemi di numerazione: il sistema esadecimale e quello ottale.
Il sistema esadecimale è un sistema posizionale con base 16. Ogni unità vale 16 volte nell’ordine subito inferiore. Per rappresentare questa base sono utilizzati i numeri da 1 a 9 più lo 0 e le lettere dalla A alla F.
Il sistema ottale è invece un sistema posizionale in base 8. Ogni unità vale 8 volte nell’ordine subito inferiore. Per rappresentare questa base sono impiegate otto cifre, da 1 a 7 più lo 0.
Detto questo, non pensiate che esistano solamente queste basi di enumerazione…
Le basi di calcolo sono infinite. Quelle illustrate qui sopra sono solo le più utilizzate, ma se voi preferite contare in base 7, 21 o 374 fate pure, ma mi ritroverete “leggermente” un po’ fuori i protocolli…
——- Chiusa parentesi ——-

Il linguaggio Binario e i Computers

A questo punto penserete forse che i computer potrebbero ragionare utilizzando diverse basi di calcolo e quindi potremmo anche inventare un nuovo tipo di linguaggio in grado di far trasmettere e ricevere input da/al computer istruito per agionare in base 7 supponiamo. Se lo pensate davvero, spegnete il computer sul quale state leggendo questa guida e andate a farvi una bella doccia e non pensateci più…
Il ragionamento filerebbe SOLO se vi fosse un altro tipo di concezione a livello fisico di un computer, ma non esiste (almeno fino ad oggi).
Abbiamo detto prima che i calcolatori possono solamente digerire due tipi di istruzione e ve lo ribadisco: 0 e 1.
Andiamo nel dettaglio.
0 è la rappresentazione di quello che noi possiamo definire anche SPENTO, NEGATIVO, CHIUSO.
1 è la rappresentazione di quello che noi possiamo definire anche ACCESO, POSITIVO, APERTO.
I primi computer sono stati concepiti proprio su questa filosofia, e cioè sul fattore di interagire con una macchina trasferendo su di essa dei dati in formato ACCESO/SPENTO, un po’ come il linguaggio morse, ma non perché questo è stato il primo pensiero masochistico di un ingeniere pazzo che ha gettato le basi dell’informatica. Quindi per capire bene questo concetto pensate al fatto che il computer per poter funzionare deve ricevere energia elettrica. Questo flusso di energia viene modulato da un interruttore che può assumere solo 2 posizioni e cioè quelle di acceso/spento. A questo punto il concetto del calcolo binario calza a pennello! Si è presa la posizione spento e gli si è attribuito il valore 0 e alla posizione acceso il valore 1.
Ecco fatto, e come per magia il computer capisce quello che gli diciamo.
In seguito grazie all’elettronica è stato possibile modulare il flusso dei dati attraverso le schede e spezzettare le informazioni in pacchetti chiamati BIT (da Binary Digit).
Ogni Bit che porta corrente è uguale a 1 (acceso) mentre i pacchetti che non portano corrente (spento) equivalgono a 0.
Qualche riga sopra vi ho parlato di “intermittenza”… ebbene questa intermittenza si chiama Clock che è la frequenza di intervallo regolare dei Bit.
Il flusso di Clocking è strutturato su due “binari” differenti che trasportano i Bit a frequenza costante.
Ora immaginiamo il nostro vecchio numero 220 che abbiamo scomposto prima e proviamo a rappresentiamolo in chiave binaria (11011100) su questo binario che poi è la base del Transistor.
Prendiamo allora il nostro numero binario 11011100 (in decimale 220).

Clock Clock Clock Clock Clock Clock Clock Clock
Clocking ——————————————> > >

Binario 0 ————0—————-0—0—

Binario 1 —1—1——-1—1—1————

Come potete vedere ogni valore binario deve seguire il clock che ne determina il suo valore elettrico e la frequenza.
———————————-
Una precisazione: il numero 220 (11011100) per essere considerato come un unico numero intero dal computer necessita di essere immagazzinato come numero variabile all’interno della memoria. Ad esempio, se noi scriviamo 220 sulla tastiera, il calcolatore interpreterà il numero come binario come:
2=10
2=10
0=0
…e non come 11011100 !
———————————-

Arrivati a questo punto c’è ancora un piccolo argomento da affrontare e poi abbiamo finito
Sino ad ora abbiamo visto come trasformare un semplice numero in binario e farlo comprendere al computer… ma con le lettere come si fa?

L’American Standard Code for Information Interchange (in poche parole, il “codice ASCII”)

Molti di voi avranno sicuramente sentito questo termine almeno una volta nella vita e vi sarete magari chiesti cosa volesse dire quella scritta: ASCII.
Il codice ASCII è lo standard di comunicazione che ha permesso di identificare le lettere del nostro alfaberto più simboli (in tutto 256) con il valore di un Byte di 8Bit ciascuno. Questi numeri vengono poi interpretati dal computer in chiave binaria in modo che oltre a noi, possa capire anche lui ^__^ .
Con questo sistema, ogni carattere o simbolo digitato sulla tastiera assume un suo valore binario.
Ad esempio abbiamo la lettera A che corrisponde al valore ASCII 65, B a 66, C a 67 e così via. Provate ad aprire un editor di testo e a tener premuto il tasto ALT seguito dal numero 65, poi lasciate il tasto ALT e vedrete comparire la “A” maiuscola.
Il carattere digitato viene interpretato in un numero e subito scomposto in chiave binaria, quindi diventerà:
A = 65 = 10000001 (binario)
Non sto a ripetervi il sistema con il quale si giunge al numero binario perché potete vederlo indietro a pagina 5.

————————————————————————————
E con questo credo proprio di aver finito, e spero che questa guida vi sia servita a qualcosa oltre che a farvi impazzire del tutto
Vi ricordo sempre di fare buon uso del sapere e delle cose che imparerete ogni giorno a venire, ma soprattutto siate sempre onesti e seguite l’etica.

[JARRET]
Master and Member of HACKER ALLIANCE CREW
Web Site: http://www.hackeralliance.net
Mail:
 



 
lobuono92 Invia Messaggio Privato
Torna in cimaVai a fondo pagina
Mostra prima i messaggi di:    

Nuova Discussione  Rispondi alla Discussione  Pagina 1 di 1
 


NascondiQuesto argomento è stato utile?
Condividi Argomento
Segnala via email Facebook Twitter Windows Live Favorites MySpace del.icio.us Digg SlashDot google.com LinkedIn StumbleUpon Blogmarks Diigo reddit.com Blinklist co.mments.com
technorati.com DIGG ITA linkagogo.com meneame.net netscape.com newsvine.com yahoo.com Fai Informazione Ok Notizie Segnalo Bookmark IT fark.com feedmelinks.com spurl.net

Online in questo argomento: 0 Registrati, 0 Nascosti e 1 Ospite
Utenti Registrati: Nessuno


 
Lista Permessi
Non puoi inserire nuovi Argomenti
Non puoi rispondere ai Messaggi
Non puoi modificare i tuoi Messaggi
Non puoi cancellare i tuoi Messaggi
Non puoi votare nei Sondaggi
Non puoi allegare files
Puoi scaricare gli allegati
Non puoi inserire eventi calendario