B1 · 第2集 · 5:10

二进制编码的唯一性

本集讲解如何避免二进制编码歧义,通过统一码长(如5位)实现一一对应解码。

来源:stph / aperi.tube · 许可:CC BY-SA 4.0

字幕

  1. Je vais fabriquer un mot qui ne veut rien dire,

    我要造一个没有意义的词,

  2. mais qui est valide du point de vue du décodage.

    但它从解码角度看是有效的。

  3. Et des mots comme ça.

    像这样的词。

  4. Je peux en trouver beaucoup.

    我能找出很多。

  5. Par exemple, ici, FDACAD est aussi un

    例如,这里的 FDACAD 也是这个编码的

  6. décodage valide de ce même code.

    一种有效解码。

  7. Je prends d'abord 101, puis 11, puis 0, puis 10, etc.

    我先取 101,再取 11,再取 0,再取 10,依此类推。

  8. Je vous en ai mis encore deux autres, xax et coed,

    我还列出了另外两个词:xax 和 coed,

  9. qui sont des décodages valides de notre code.

    它们都是我们编码的有效解码。

  10. Alors là, on a un problème, c'est que suivant comment on décompose le code,

    这时就出现了问题:根据对编码的不同切分方式,

  11. on tombe sur des mots différents.

    会得到不同的词。

  12. Autrement dit, à partir d'un code, on

    换句话说,同一个编码,

  13. peut retrouver plusieurs mots.

    可能还原出多个词。

  14. Et nous ce qu'on voudrait, c'est ne pas avoir le choix.

    而我们真正想要的,是唯一确定的结果。

  15. On voudrait que un code égale un mot.

    我们希望一个编码只对应一个词。

  16. Alors, comment faire ça?

    那么,该怎么做呢?

  17. D'abord, on va revenir sur nos codes et faire quelques constats.

    首先,我们回到自己的编码,观察一些现象。

  18. On peut constater que le code de la lettre C, c'est

    我们可以发现,字母 C 的编码,

  19. le même que le code du mot BA.

    和单词 BA 的编码相同。

  20. Une conséquence de ça, c'est que n'importe quel mot qui commence par BA,

    由此带来的一个结果是:任何以 BA 开头的词,

  21. si je remplace par C, je trouve le même code.

    如果把 BA 替换成 C,就会得到相同的编码。

  22. Et ça marche dans l'autre sens, n'importe quel mot qui commence par C,

    反过来也成立:任何以 C 开头的词,

  23. si je remplace C par BA,

    如果把 C 替换成 BA,

  24. je vais fabriquer le même code.

    也会生成相同的编码。

  25. Et donc ça va nous générer des problèmes.

    因此,这会给我们带来问题。

  26. Je peux trouver d'autres exemples, par exemple le code de F,

    我可以找到其他例子,比如F的编码,

  27. c'est le même que le code de CB.

    它和CB的编码相同。

  28. Des exemples comme ça, il y en a beaucoup.

    这类例子有很多。

  29. Le problème, c'est que.

    问题是,

  30. Certains codes sont des morceaux d'autres codes.

    某些编码是其他编码的一部分。

  31. Le code de A, c'est un morceau du code de C.

    A的编码是C编码的一部分。

  32. Le code de C, c'est un morceau du code de

    C的编码是E编码的

  33. E, etc. Nous, on voudrait éviter ça.

    一部分,等等。我们希望避免这种情况。

  34. Eh bien, un moyen simple qu'on peut faire pour éviter ça,

    那么,避免这种情况的一个简单方法是

  35. c'est de fabriquer des côtes qui ont tous la même taille.

    制作所有长度相同的编码。

  36. Et pour faire ça, ce que je vous propose,

    为此,我建议大家

  37. c'est d'ajouter des zéros devant les codes trop courts.

    在过短的编码前面补零。

  38. Alors voilà, je les ai ajoutés,

    好了,我已经加上了,

  39. je les ai mis en bleu pour que vous les voyez bien,

    并用蓝色标出,方便大家看清,

  40. mais ensuite ils seront en noir. En bleu,

    但之后它们会变成黑色。用蓝色表示的话,

  41. ce serait interdit parce que ça générerait un code ternaire avec des 0 bleus,

    会产生包含蓝色0、黑色0和1的三进制编码,

  42. des 0 noirs et des 1.

    而这是不允许的。

  43. Nous, on a le droit uniquement aux 0 et aux 1.

    我们只允许使用0和1。

  44. Alors voilà, je vous ai mis nos nouveaux codes à gauche,

    好了,我把新编码放在左边了,

  45. et maintenant on va recommencer l'encodage.

    现在我们重新开始编码。

  46. On repart du même mot.

    我们仍从同一个单词出发。

  47. Cette fois- ci, le code de C, c'est

    这一次,C的编码是

  48. 0 0 0 1 0, le code de H, c'est 0 0 1

    0 0 0 1 0,H的编码是0 0 1 1 1,

  49. 1 1, le code de A, c'est

    A的编码是

  50. 0 0 0 0 0, et le code de T, c'est.

    0 0 0 0 0,而T的编码是。

  51. 1 0 0 1 1. Qu'est- ce que ça donne du point de vue du décodage?

    1 0 0 1 1。从解码角度看,这表示什么呢?

  52. Je vous ai mis le code en haut.

    我把编码写在上方了。

  53. Et bien maintenant, on n'a plus le choix.

    现在,我们别无选择。

  54. On fait des groupes de cinq chiffres.

    我们要把数字每五位分成一组。

  55. D'abord 0 0 0 1 1.

    首先是 0 0 0 1 1。

  56. Puis les cinq suivants, puis les cinq suivants, puis les cinq suivants,

    接着是接下来的五位,再接下来的五位,再接下来的五位,

  57. et à partir de ces codes, on retrouve les lettres, d'abord le C,

    再根据这些编码,还原出对应的字母:先是 C,

  58. puis le H, puis le A,

    然后是 H,再是 A,

  59. puis le T. Et voilà, on a réussi.

    最后是 T。就这样,我们成功了!

  60. On a utilisé uniquement des 0 et des 1, et

    我们只用了 0 和 1,

  61. on a bien la propriété qu'un code égale un mot.

    而且完全实现了‘一个编码对应一个词’的特性。

  62. Ce que je vous propose pour terminer,

    最后,我想请大家动手实践一下。

  63. c'est maintenant que ce soit à vous de travailler un petit peu.

    现在轮到你们自己来练习了。

  64. Alors vous allez sortir vos ardoises et vous allez faire la chose suivante.

    请拿出小黑板,完成下面这个任务。

  65. Vous allez écrire un petit mot sur votre ardoise.

    在小黑板上写一个简短的单词。

  66. Petit, c'est quatre ou cinq lettres mais pas plus, sinon le code sera trop grand.

    ‘简短’指四到五个字母,不能再多,否则编码会太长。

  67. Et vous allez essayer de l'écrire pour que votre voisin ne le voit pas.

    请尽量不让同桌看到你写的单词。

  68. Moi, par exemple, j'écris moto, mais c'est un secret.

    比如,我写的是 moto,但这可是个秘密哦!

  69. Ensuite, vous allez fabriquer le code de votre mot.

    接着,请为你的单词制作对应的编码。

  70. Donc vous voyez, pour M, j'ai écrit le code, puis pour O, puis pour T,

    你看,M 对应的编码我写好了,O 的、T 的,

  71. puis pour O. Ensuite, je vais effacer le mot que j'ai écrit.

    最后是第二个 O 的。之后,我会擦掉原来写的单词。

  72. Et je garde uniquement le code.

    只留下编码。

  73. Et ensuite, je vais échanger mon ardoise avec celle de mon voisin.

    然后,我和同桌交换小黑板。

  74. Voilà, je récupère une nouvelle ardoise avec un code que je ne connais pas.

    看,我拿到了一块新黑板,上面是一串我不认识的编码。

  75. Eh bien, je vais essayer de le décoder.

    那么,我就来试着把它解码吧!

  76. Alors pour ce faire, je vais faire des groupes de cinq chiffres.

    为此,我将把数字每五个一组进行分组。

  77. Et ensuite, je vais regarder dans mon tableau

    然后,我将查看我的对照表,

  78. les codes à quelle lettre ils correspondent.

    找出每个代码对应的字母。

  79. Donc le premier correspond à la lettre F,

    第一个代码对应字母 F,

  80. puis la lettre I, puis la lettre N, puis la lettre I.

    接着是字母 I、N、I。

  81. Et voilà, c'est fini.

    好了,解密完成!

  82. Si vous avez une question, je vous ai mis mon adresse mail, n'hésitez pas.

    如果您有任何问题,请通过我提供的邮箱联系我,欢迎随时提问。

  83. Et puis je vous laisse les codes pour que vous puissiez travailler.

    另外,我把这些密码留给大家,方便你们练习。

  84. Bonne journée, merci.

    祝大家今天愉快,谢谢!