Come molti sanno qui, usando 4 bit, siamo in grado di contare da 0 a 15 (0123456789ABCDEF in esadecimali). Ma se dovessimo contare solo fino a 9, utilizzeremmo comunque 4 bit e le cifre da A a F verrebbero sprecate.
Tuttavia, la pagina del codice QR di Wikipedia afferma che l'uso di sole cifre numeriche da 0 a 9 utilizza 3 bit per carattere, che è corretto dal punto di vista statistico. Eppure un terzo di un bit non è un oggetto fisico e l'invio di un numero compreso tra 0 e 9 utilizza almeno 4 bit per quanto ne so.
Esiste un modo per utilizzare le combinazioni sprecate per inviare in modo efficace un personaggio con frazioni di bit?
OK, lasciami fare un esempio: le due cifre "27" devono essere inviate. Con le normali tecniche di codifica, i bit inviati sarebbero 00100111. Potremmo quindi immaginare un sistema che sostituisca la cifra '2' con la cifra 'E' o 'F', a seconda del bit successivo; in questo caso il bit successivo è 0, quindi "2" è sostituito da "E". La stringa di bit risultante sarebbe quindi 1101 0 111. D'altra parte, se è necessario inviare le cifre "28", il primo bit dopo "2" è un 1, quindi viene invece sostituito dalla cifra "F", restituendo la stringa 1111 1 000.
In entrambi i casi, è stata effettuata un'economia di 1 bit, poiché un nibble è stato utilizzato per due caratteri diversi. In altre parole, vengono utilizzati tre bit e mezzo su ciascun carattere.
(10 * first_digit) + second_digit
e codificarlo in 7 bit, che rappresentano 0 ... 99, con i codici 100-127 rimasti per altre cose. E c'è ancora più risparmio con 3 cifre compresse in 10 bit.