如大多数人所知,通过使用4位,我们可以从0到15进行计数(十六进制为0123456789ABCDEF)。但是,如果我们最多只能计数9个,那么我们仍将使用4位,并且会浪费从A到F的数字。
但是,维基百科的QR码页面指出,仅使用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位,甚至可以节省更多。