?
/ \
/ \
0 1
/ \ / \
0 1 0 1
0 1 | | 0 1
a b c d e f
i、 有一个符号 a == 000. 但是没有用0、00或0000表示的符号。 所以第一个符号必须是 a . 下一个是00(nope),或者0010(nope),或者001== b . 等等。 哈夫曼树(如果有意义地创建)是基于符号的分析 c 以及 d 在输入数据中出现的频率更高,因此给它们一个两位表示,而其他四个符号得到更长的三位表示,对总长度是一个好处。我想那是你们班上的前几次练习的主题。
1条答案
按热度按时间50few1ms1#
如何存储这些值的问题很容易回答。
将其存储为一个16位的值,即二进制0000010111,即0x05b7,即十进制1463。
更有趣的是如何从二进制文件中读回这六个值。i、 e.如何将读取0x05b7转换回六个值。其中最重要也是最不简单的部分是知道每个值的终点。i、 为什么第一个值是000,而不是00,也不是0000?
答案是基于哈夫曼树,这显然与编码有关。
就是这样:
i、 有一个符号
a
== 000. 但是没有用0、00或0000表示的符号。所以第一个符号必须是
a
.下一个是00(nope),或者0010(nope),或者001==
b
.等等。
哈夫曼树(如果有意义地创建)是基于符号的分析
c
以及d
在输入数据中出现的频率更高,因此给它们一个两位表示,而其他四个符号得到更长的三位表示,对总长度是一个好处。我想那是你们班上的前几次练习的主题。