ตามที่คนส่วนใหญ่ที่นี่รู้โดยใช้ 4 บิตเราสามารถนับจาก 0 ถึง 15 (0123456789ABCDEF เป็นเลขฐานสิบหก) แต่ถ้าเรานับได้เพียง 9 เราจะยังคงใช้ 4 บิตและตัวเลขจาก A ถึง F จะสูญเปล่า
อย่างไรก็ตามหน้า QR-Code ของ Wikipediaระบุว่าการใช้เฉพาะตัวเลขที่เป็นตัวเลขตั้งแต่ 0 ถึง 9 ใช้3⅓บิตต่อตัวอักษรซึ่งถูกต้องจากจุดยืนทางสถิติ และหนึ่งในสามของบิตไม่ใช่วัตถุทางกายภาพและการส่งตัวเลขตั้งแต่ 0 ถึง 9 จะใช้ความรู้ของฉันอย่างน้อย 4 บิต
มีวิธีใดบ้างที่จะใช้ชุดค่าผสมที่สูญเปล่าเพื่อส่งอักขระอย่างมีประสิทธิภาพด้วยเศษส่วนของบิต?
ตกลงฉันขอยกตัวอย่าง: ต้องส่งสองหลัก "27" ด้วยเทคนิคการเข้ารหัสปกติบิตที่ส่งจะเป็น 00100111 จากนั้นเราสามารถจินตนาการระบบที่จะแทนที่ตัวเลข '2' ด้วย 'E' หรือ 'F' ซึ่งขึ้นอยู่กับบิตถัดไป ในกรณีนี้บิตถัดไปคือ 0 ดังนั้น '2' จึงถูกแทนที่ด้วย 'E' บิตสตริงที่ได้จะเป็น 1101 0 111 ในทางกลับกันหากต้องส่งตัวเลข "28" บิตแรกหลังจาก '2' คือ 1 ดังนั้นจะถูกแทนที่ด้วย 'F' หลักแทน ส่งผลให้สตริง 1111 1 000
ในทั้งสองกรณีการประหยัด 1 บิตได้รับผลกระทบเพราะใช้แทะหนึ่งอันสำหรับอักขระสองตัวที่แตกต่างกัน กล่าวอีกนัยหนึ่งสามและครึ่งบิตใช้อักขระแต่ละตัว
(10 * first_digit) + second_digit
และเข้ารหัสที่เป็น 7 บิตคิดเป็น 0 ... 99 ด้วยรหัส 100-127 ที่เหลือสำหรับสิ่งอื่น ๆ และยังประหยัดได้มากขึ้นด้วยการบีบอัด 3 หลักเป็น 10 บิต