Wie die meisten Leute hier wissen, können wir mit 4 Bits von 0 bis 15 zählen (0123456789ABCDEF in hexadezimaler Schreibweise). Wenn wir jedoch nur bis 9 zählen würden, würden wir immer noch 4 Bits verwenden, und die Ziffern von A bis F würden verschwendet.
Auf der QR-Code-Seite von Wikipedia heißt es jedoch, dass bei der Verwendung von Ziffern von 0 bis 9 3⅓ Bits pro Zeichen verwendet werden, was statistisch korrekt ist. Und dennoch ist ein Drittel eines Bits kein physisches Objekt, und das Senden einer Zahl von 0 bis 9 verwendet meines Wissens mindestens 4 Bits.
Gibt es eine Möglichkeit, die verschwendeten Kombinationen zu verwenden, um ein Zeichen mit Brüchen von Bits effektiv zu senden?
OK, lassen Sie mich ein Beispiel geben: Die zwei Ziffern "27" müssen gesendet werden. Bei normalen Codierungstechniken wären die gesendeten Bits 00100111. Wir könnten uns dann ein System vorstellen, das die Ziffer '2' durch die Ziffer 'E' oder 'F' ersetzt, abhängig vom nächsten Bit. In diesem Fall ist das nächste Bit 0, daher wird die '2' durch 'E' ersetzt. Die resultierende Bitfolge wäre dann 1101 0 111. Wenn andererseits die Ziffern "28" gesendet werden müssen, ist das erste Bit nach der "2" eine 1, so dass es stattdessen durch die Ziffer "F" ersetzt wird. Nachgeben der Zeichenfolge 1111 1 000.
In beiden Fällen wurde eine Einsparung von 1 Bit bewirkt, da ein Halbbyte für zwei verschiedene Zeichen verwendet wurde. Mit anderen Worten, dreieinhalb Bits werden für jedes Zeichen verwendet.
(10 * first_digit) + second_digit
und in 7 Bits codieren können, die 0 ... 99 darstellen, wobei die Codes 100-127 für andere Dinge übrig bleiben. Und es gibt noch mehr Einsparungen mit 3 Stellen, die auf 10 Bits komprimiert sind.