Buradaki çoğu insanın bildiği gibi, 4 bit kullanarak, 0'dan 15'e kadar sayabiliriz (0123456789ABCDEF onaltılık). Ancak sadece 9'a kadar sayacak olsaydık, hala 4 bit kullanırdık ve A'dan F'ye kadar olan rakamlar boşa gidecekti.
Bununla birlikte, Wikipedia'nın QR-Code sayfası , 0'dan 9'a kadar yalnızca sayısal rakamlar kullanmanın, karakter başına 3⅓ bit kullandığını ve bu da istatistiksel bir açıdan doğru olduğunu belirtir. Ve yine de biraz üçte biri fiziksel bir nesne değil ve 0'dan 9'a kadar bir sayı göndermek bilgime en az 4 bit kullanıyor.
Boşa giden kombinasyonları, bit kesirleri olan bir karakteri etkili bir şekilde göndermek için kullanmanın bir yolu var mı?
Tamam, bir örnek vereyim: İki rakam "27" gönderilmelidir. Normal kodlama tekniklerinde, gönderilen bitler 00100111 olur. Bir sonraki bite bağlı olarak, '2' rakamını 'E' veya 'F' rakamıyla değiştirecek bir sistem hayal edebiliriz; bu durumda bir sonraki bit 0 olur, '2' yerine 'E' olur. Sonuçta elde edilen bit dizisi 1101 0 111 olur. Öte yandan "28" rakamlarının gönderilmesi gerekiyorsa, "2" den sonraki ilk bit 1 olur, onun yerine "F" rakamı ile değiştirilir, dize 1111 gr 1 000.
Her iki durumda da, 1 bitlik bir ekonomi etkilendi, çünkü iki farklı karakter için bir kırıntı kullanıldı. Başka bir deyişle, her karakterde üç buçuk bit kullanılır.
(10 * first_digit) + second_digit
0-99'u temsil eden ve diğer şeyler için 100-127 kodları kalan 7 bit olarak hesaplayıp kodlayabileceğinizi tanımak daha iyidir. Ve 10 bite sıkıştırılmış 3 basamakla daha da fazla tasarruf var.