ここでほとんどの人が知っているように、4ビットを使用することで、0〜15(16進数の0123456789ABCDEF)をカウントできます。しかし、9までしかカウントしない場合、4ビットを使用することになり、AからFまでの数字は無駄になります。
ただし、ウィキペディアのQRコードページでは、0〜9の数字のみを使用する場合は文字ごとに3ビットを使用するようになっています。これは統計的な観点から正しいです。さらに、ビットの3分の1は物理的なオブジェクトではなく、0〜9の数値を送信する場合、少なくとも4ビットが使用されます。
無駄な組み合わせを使用して、ビットの端数を持つ文字を効果的に送信する方法はありますか?
OK、例を挙げましょう。2桁の「27」を送信する必要があります。通常のコーディング技術では、送信されるビットは00100111になります。次に、次のビットに応じて、数字「2」を数字「E」または「F」に置き換えるシステムを想像できます。この場合、次のビットは0なので、「2」は「E」に置き換えられます。結果のビット列は1101 0 111になります。一方、数字「28」を送信する必要がある場合、「2」の後の最初のビットは1なので、代わりに数字「F」に置き換えられます。文字列1111 1 000 を生成します。
どちらの場合も、1つのニブルが2つの異なる文字に使用されたため、1ビットの経済性が達成されました。つまり、各文字に3ビット半ビットが使用されます。
(10 * first_digit) + second_digit
、0 ... 99を表す7ビットにエンコードし、コード100-127を他のものに残しておくことができることを認識した方が良いでしょう。さらに、3桁を10ビットに圧縮するとさらに節約できます。