Pagina 1 di 2

Ma perchè c'è il 2???

Inviato: lun 7 ago 2006, 23:22
da alex.franci
Ragazzi,
ho un serio problema... e so che se non lo risolverò al più presto mi tormenterà per tutta la vita :D
So che in informatica la scala è basata sull'esponenziale del 2: per esempio ci sono 1024 mb (2^10) in 1 gb. ma perchè???

cioè io sapevo che è perchè in informatica si hanno solo 2 possibilità: o 0 o 1. ma ero piccolo quando me l'hanno spiegata così e ora che sono più grandicello comincio ad avere seri dubbi (mi sa che è 'na cagata).

Aiuto!
Grazie :D

Inviato: lun 7 ago 2006, 23:39
da gohanz
I processori sono composti da Transistor. Li puoi immaginare come interruttori, in cui lo 0 o l'1 rappresentano il loro stato acceso/spento. Tutto qui.

Inviato: lun 7 ago 2006, 23:41
da alex.franci
sì ma xk proprio 1024?
non potevano essercene 1000?

Inviato: lun 7 ago 2006, 23:44
da Absolut
2^10= 1024.... 2^32... etc etc... spazio di insirizzamento.... mi pare no!?

Inviato: mar 8 ago 2006, 0:03
da alex.franci
sì, ma ho capito del perchè si usa il 2. perchè ci sono solo 2 possibilità (o 0 o 1).
ma non ho capito perchè proprio 2^10. cioè... non possono essercene 1000 di megabyte in un gigabyte?

mi sa che avrei bisogno di capire proprio esattamente come sono messi i byte. mi servirebbe tipo un disegnino. domani vado a consultare la mia bibbia (Appunti di Informatica Libera)

ma forse è l'orario :P spero domattina di capire e avere l'illuminazione

comunque grazie e se avete ancora delle lucidazioni scrivete pure :)

Inviato: mar 8 ago 2006, 1:02
da Platone76
Allora... con 1 bit puoi codificare 2 messaggi: 0 e 1.
Con 2 bit puoi codificare 4 messaggi: 00, 01, 10 e 11.
Con 3 bit ne puoi codificare 8, e così via, secondo la regola della potenza del 2.

Chiaramente, tutto quello che passa dal processore viene trattato come un numero binario, quindi ricodificato in codice di 0 e 1, associabile ad una sequenza di "acceso" e "spento".
Per tutto non si intende solo i valori che possono essere contenuti in un blocco di memoria, ma pure l'indirizzo della memoria stessa. Ora, mettiamo il caso che si voglia indicizzare un tot di memoria utilizzando 10 bit: in questo modo puoi indicizzare i valori che vanno da 0 a 1023. Per fare le cose "in base 10" dovresti a questo punto buttare via 24 indici (dal 1000 al 1023) per far "tornare i conti". Ma questo:
1) E' complicato
2) Va contro la logica della macchina
3) E' controproducente

"Storicamente" si è deciso quindi di utilizzare la nozione 1 KByte = 1024 Byte (e via dicendo), perché faceva più comodo ed era più in sintonia con il mondo delle macchine.

Comunque sia, il problema è "riaffiorato" abbastanza ultimamente, tanto che c'è qualcuno che propone il Kibibyte (Kilo Binary Byte) come unità di misura al posto del KByte. Se vai su wikipedia inglese e cerchi KB ce li hai nella prima riga.

Ciao!

Francesco

Inviato: mar 8 ago 2006, 1:12
da phobos3576
Leggiti questo mattone che ho scritto qualche tempo fa; in particolare, ti consiglio i primi capitoli della sezione Assembly Base.

http://xoomer.alice.it/ramsoft

Dopo che lo avrai letto tutto, le tue idee saranno ancora più confuse!

:D :D :D :D :D :D

Comunque, come ti ha già detto Platone76, nel mondo dei PC il numero perfetto è 2 e non 3; rappresentando qualsiasi codifica numerica sotto forma di potenza del 2 con esponente intero, si ottengono enormi semplificazioni, sia hardware, sia software!

Inviato: mar 8 ago 2006, 9:18
da Paoletta
in un mondo binario fare le divisioni per 2 è come fare nel mondo decimale divisioni per dieci (e quindi è una divisione che si fa semplicemente con uno shift, se il numero è pari);

pensa allo spreco di tempo se in base 2 si dovesse dividere per dieci...in base 2 usare le potenze di 2 porta a delle ottimizzazioni;

Inviato: mar 8 ago 2006, 10:10
da useless
molto semplicemente, si usa 1024 (2^10) perché è ragionevolmente simile a 1000 (10^3), e sembrava un buon riferimento da usare come "ordine di grandezza", tutto lì.

@paoletta: il tuo messaggio non è molto chiaro :P

Inviato: mar 8 ago 2006, 11:09
da Paoletta
useless ha scritto:
@paoletta: il tuo messaggio non è molto chiaro :P
in effetti è vero, spero di averlo un po' chiarito!

Inviato: mar 8 ago 2006, 11:10
da op15l
paoletta voleva dire che nel mondo binario e' molto facile fare una divisione se il divisore e' un 2^n, basta fare uno shift (come avviene nel mondo decimale con il 10^n )

Inviato: mar 8 ago 2006, 11:16
da sir_alex
Sostanzialmente in fisica 10^3 kilo, 10^6 mega, 10^9 giga, 10^12 tera etc, in informatica si va con esponenti di 2 ma ad esempio 2^10=1024, 10^3=1000 quindi kilo entrambi, 2^20=1048576, 10^6=1 milione quindi mega entrambi, and so on... per similitudine, direi! In alcuni casi puoi anche approssimare con gli esponenti di 10, nel senso se tipo hai un mega di disco che ci siano 576 bytes in più non ti cambia la vita, quindi puoi semplificare se hai bisogno... alla fin fine i kilo mega giga e tera in informatica puoi ricordarti che sono come in fisica più un qualcosina...

Inviato: mar 8 ago 2006, 12:11
da albatros
Terzo tentativo di scrittura: la prima volta si è piantato firefox (non succede quasi mai), la seconda ho inavveritamente spento il pc... :evil: :roll: :cry:
Ormai gli altri hanno già risposto e meglio di quanto avrei potuto fare io, quindi mi limito ad un paio di osservazioni e a una riflessione.

L'uso dei prefissi "ingegneristici" diventa via via sempre più impreciso man mano che i numeri in gioco diventano grandi, dal 2,4% del K si va a quasi un 10% per il T...
Tuttavia essi rimangono sempre molto comodi e la conversione al numero reale di byte è semplicissima... Anche in ambito scientifico spesso ci si limita a dare un'ordine di grandezza...

Paoletta è stata probabilmente chiarissima per chi sapeva già cosa voleva dire e oscura per chi non lo sapeva...
Aggiungo un esempio:
100100/10 (in base 2) = 10010
Se il numero è rappresentato in un circuito da una serie di interruttori dove 1 è acceso e 0 spento, basta far scorrere tutta la configurazione di una posizione a destra per realizzare una divisione per 2, di due posizioni per una divisione per 4, di n posizioni per una divisione per 2^n...
Divertiti un po' con una calcolatrice scientifica, anche di queste come kcalc o altre che trovi in linux...
Consiglio anch'io la lettura del tutorial di phobos3576, che richiede attenzione, ma che ti spiega moltissime cose passo passo, vedrai anche molti altri esempi e capirai di quanto semplifichi le cose usare la base 2 (che è quella più naturale, per cui si potrebbe dire di quanto si complichino inutilmente le cose usando la base 10).

La riflessione è che tendiamo a considerare la base 10 privilegiata perché abbiamo 10 dita e perché siamo stati abituati così, ma già nella nostra civiltà per il piccolo commercio si è spesso preferito la base 12 (la dozzina) perché divisibile per 2,3,4,6, contro il 10 divisibile solo per 2 e 5...
Altre civiltà, come probabilmente del resto già saprai, usavano però basi diverse...
Leggi: http://it.wikipedia.org/wiki/Sistema_di_numerazione e qualche link ai sistemi maya e babilonese, ad esempio...
Se ci pensi bene, poi, il sistema che usiamo per il tempo è ancora più folle: un anno di 12 mesi, di durata diversa, con giorni di 24 ore, ore di 60 minuti di 60 secondi... Però sarebbe folle usare per la vita di tutti i giorni i multipli del secondo...
Tu ci andresti ad un appuntamento con una che ti dice: sarò via fino al giorno giuliano 2453970, telefonami verso 1,5 Megasecondi da ora ? :D

P.S.
A proposito delle unità di misura, lo sai che qualche anno fa una sonda si è schiantata su marte perché il team europeo aveva usato i kg e il team americano le libbre? 8) :(

grazie

Inviato: mar 8 ago 2006, 12:20
da alex.franci
Uhm... bhe grazie mille!
Ora mi è un po' più chiaro... sì dai: ci sono 2 possibilità, quindi se fosse in base 10 si dovrebbero buttare via degli indici... sìsì: sarebbe una sciocchezza.
Okay, grazie mille!
comunque sto dando un'occhiata al sito http://xoomer.alice.it/ramsoft/ . È interessante: ora me lo leggo, così almeno spero di capirci un po' di più.
Grazie ancora!

Inviato: mar 8 ago 2006, 12:22
da albatros
Errata corrige:
la sonda non si è schiantata, è bruciata...
Vedi: http://en.wikipedia.org/wiki/Mars_Climate_Orbiter