Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: bit e Byte

Hybrid View

  1. #1

    bit e Byte

    Ieri mi sono trovato a discutere di un argomento piuttosto elementare eppure che mi ha messo in difficoltà: perché un byte è stato definito come 8 bit? E' stata una scelta arbitraria o c'è una qualche convenienza?
    Da quanto leggo su internet, sembra che il numero di bit sia stato incrementato per includere via via più caratteri. Però il fatto che si prediligano le potenze del 2, mi fa pensare che qualche convenienza nei calcoli ci deve essere.

    Buona giornata!

  2. #2
    il sistema di numerazione binario (cioè a base 2) è la base del funzionamento di un computer.
    Il microprocessore è composto da migliaia di transistor, i quali possono avere solo due stati, che vengono "letti" come 0 o 1. (acceso/spento, alto voltaggio/basso voltaggio... ecc)
    Questa variabile si chiama bit (Binary digit) ed è la più piccola informazione che un computer può rappresentare, qualsiasi altro tipo di informazione deve essere perciò una combinazione di bit -> da qui le potenze di due.
    Un bit è troppo piccolo quindi per conservare un carattere o un numero o qualsiasi altra cosa in realtà ci serva: ci puoi mettere solo un bool.
    Storicamente un byte era il numero di bit utilizzati per codificare un singolo carattere di testo in un computer, da quel momento poi le architetture dei computer si sono basati su questo, ed è anche diventato un'unità di misura delle capacità della memoria. A quei tempi bastavano 8 bit per rappresentare i caratteri (glie ne bastavano 256: gli americani non hanno caratteri accentati).
    Quindi credo sia semplicemente per questo che un byte sia 8 bit: una convenzione

  3. #3
    È sostanzialmente una convenzione che dipende da diversi "accidenti storici", spinta anche dal fatto che 8 bit per byte è un numero in genere abbastanza "comodo" (256 caratteri sono un charset abbastanza esteso, un byte di 8 bit si può visualizzare in maniera comoda come due "nibble" esadecimali, per far riferimento ad un bit in un byte basta un intero da 3 bit, ...)
    http://en.wikipedia.org/wiki/Byte#History
    http://programmers.stackexchange.com...are-eight-bits
    Ultima modifica di MItaly; 24-10-2013 a 17:47
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    L'idea che mi sono fatto è riassunta bene da MItaly:

    Quote Originariamente inviata da MItaly Visualizza il messaggio
    È sostanzialmente una convenzione che dipende da diversi "accidenti storici", spinta anche dal fatto che 8 bit per byte è un numero in genere abbastanza "comodo" (256 caratteri sono un charset abbastanza esteso [...])
    Storicamente, si è cercato il numero minimo di bit per rappresentare un sufficiente numero di caratteri. Si è passati da 4, a 6 e a 7 bit con l'ASCII. Più recentemente si è arrivati a 8 bit con l'ASCII esteso e questa misura è stata presa come standard. Già l'ASCII permetteva un buon numero di caratteri, poi con l'extended ASCII il numero è diventato sufficientemente ampio da garantire una buona programmazione nella maggior parte dei casi.

    La questione di giustificare il numero di bit con questioni di convenienza nella progettazione dell'hardware non mi convince. Il software e l'hardware evolvono insieme, sono contemporaneamente causa ed effetto dell'altro. Ad esempio, bus ad 8 bit sono stati fatti anche perché 8 bit era lo standard; non penso ci siano grandi impedimenti tecnici per fare bus a 7 o 9 bit.

    Discorso diverso per la scelta del codice binario, che offre indubbiamente degli ottimi vantaggi sia numerici che tecnici.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da ginetto79 Visualizza il messaggio
    L'idea che mi sono fatto è
    Ripeto .... l'ASCII è una delle spiegazioni ma, come ti ho detto, esistono anche sistemi a 12 o 14 bit per singola cella di memoria e quindi non è una spiegazione completa.

    L'ASCII esteso non è "recente" (a meno che tu non ritenga recenti gli anni '80 del secolo scorso) e il byte era già ad 8 bit prima dell'ASCII esteso ...

    Secondo me stiamo cercando il famoso "sesso degli angeli" ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Quote Originariamente inviata da ginetto79 Visualizza il messaggio
    La questione di giustificare il numero di bit con questioni di convenienza nella progettazione dell'hardware non mi convince. Il software e l'hardware evolvono insieme, sono contemporaneamente causa ed effetto dell'altro. Ad esempio, bus ad 8 bit sono stati fatti anche perché 8 bit era lo standard; non penso ci siano grandi impedimenti tecnici per fare bus a 7 o 9 bit.
    Infatti sono stati fatti, e tuttora diversi processori per usi particolari (ad esempio molti DSP) usano dei byte più grandi di 8 bit (tipicamente perché lavorano solo con dati di tali dimensioni, e indirizzare la memoria con unità più piccole è sostanzialmente inutile). Un byte da 8 bit è comodo in una macchina general-purpose per le ragioni spiegate nel thread (oltre al fatto che ormai è uno standard de facto), ma ovviamente non è imprescindibile.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Quindi è stata una scelta piuttosto arbitraria, mi sembra di capire.
    Però non è singolare il fatto che salvo rare eccezioni sono stati scelti sistemi a 4, 8, 16, 32 e 64 bit, ossia tutte potenze di 2?

  8. #8
    Quote Originariamente inviata da ginetto79 Visualizza il messaggio
    Quindi è stata una scelta piuttosto arbitraria, mi sembra di capire.
    Però non è singolare il fatto che salvo rare eccezioni sono stati scelti sistemi a 4, 8, 16, 32 e 64 bit, ossia tutte potenze di 2?
    Non fare confusione... i bit che compongono un byte sono una cosa, la dimensione della word nativa (e dei puntatori) è un'altra. Il fatto che i tipi di dati superiori al byte siano multipli di 8 bit comunque è normale, se un processore consente di indicizzare la memoria per byte di 8 bit, è ovvio che tutti i tipi di dimensioni superiori siano multipli del byte.

    Per il resto, concordo con oregon, lo standard ASCII era un charset a 7 bit, che era poi in genere la parte comune ai vari codepage a 8 bit "nazionali" o specifici del produttore che sono stati inventati in seguito (il "raddoppio" della tabella caratteri ovviamente ha approfittato del fatto che molti microprocessori operavano con byte da 8 bit).
    Tuttora ci si tira dietro l'eredità dell'ASCII a 7 bit in diversi formati, come il MIME, che in genere codificano qualunque dato binario in base64 per evitare problemi con eventuali sistemi che si aspettano solo caratteri di 7 bit nei messaggi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    tutto dev'essere per forza una potenza di due tel'ho spiegato prima il perchè
    l'unica arbitrarietà sta nel fatto che il byte sia di 8 bit e non (per dire) di 16 o di 32

  10. #10
    a dire il vero non l'ho spiegato in modo diretto... Ciò che ho scritto è stato solamente
    Storicamente un byte era il numero di bit utilizzati per codificare un singolo carattere di testo in un computer, da quel momento poi le architetture dei computer si sono basati su questo
    se tu ti basi sul fatto che un'informazione piccola, quale può essere un carattere, occupi 8 bit, crei tutto come un multiplo di questa informazione (tipo: quante piccole informazioni posso inserire? 10-> 10 byte, 20->20byte) essendo 8 una potenza di due, allora tutte le architettture da allora in avanti si sono sviluppate ssendo potenze di due di conseguenza.
    Se negli anni 60 quando fu creato il codice ASCII si fosse deciso che un byte fosse costituito da 6 bit oggi le architetture sarebbero multiple di 6 bit e quindi non più potenze di due

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.