Như hầu hết mọi người ở đây đều biết, bằng cách sử dụng 4 bit, chúng tôi có thể đếm từ 0 đến 15 (0123456789ABCDEF theo hệ thập lục phân). Nhưng nếu chúng ta chỉ đếm tối đa 9, chúng ta vẫn sẽ sử dụng 4 bit và các chữ số từ A đến F sẽ bị lãng phí.
Tuy nhiên, trang Mã QR của Wikipedia chỉ ra rằng chỉ sử dụng các chữ số từ 0 đến 9 sử dụng 3⅓ bit cho mỗi ký tự, điều này đúng từ quan điểm thống kê. Tuy nhiên, một phần ba bit không phải là một đối tượng vật lý và việc gửi một số từ 0 đến 9 sử dụng ít nhất 4 bit cho kiến thức của tôi.
Có cách nào để sử dụng các kết hợp lãng phí để gửi một ký tự có phân số bit một cách hiệu quả không?
OK, hãy để tôi đưa ra một ví dụ: Phải gửi hai chữ số "27". Với các kỹ thuật mã hóa thông thường, các bit được gửi sẽ là 00100111. Sau đó, chúng ta có thể tưởng tượng một hệ thống sẽ thay thế chữ số '2' bằng chữ số 'E' hoặc 'F', tùy thuộc vào bit tiếp theo; trong trường hợp này, bit tiếp theo là 0, vì vậy '2' được thay thế bằng 'E'. Chuỗi bit kết quả sau đó sẽ là 1101 0 111. Mặt khác, nếu các chữ số "28" phải được gửi, bit đầu tiên sau '2' là 1, do đó, nó được thay thế bằng chữ số 'F' thay vào đó, thu được chuỗi 1111 1 000.
Trong cả hai trường hợp, một nền kinh tế 1 bit đã được thực hiện, bởi vì một nibble đã được sử dụng cho hai nhân vật khác nhau. Nói cách khác, ba bit rưỡi được sử dụng trên mỗi ký tự.
(10 * first_digit) + second_digit
và mã hóa thành 7 bit, đại diện cho 0 ... 99, với các mã 100-127 còn lại cho những thứ khác. Và thậm chí còn tiết kiệm hơn với 3 chữ số được nén thành 10 bit.