分享下阿里鸽子题思路
31个字符要5 bit,题目暗示要考虑数据的安全性,容易想到需要加1bit作奇偶校验位。
我刚开始以为1只代表1字符,可ABC只要3只,剩下5只代表位置信息吗,但这样明显不行,所以想到位置信息和数据信息结合。
比如每只前3位代表位置信息,可以让接收方准备8只笼子,根据前3 bit来归放鸽子。
所有鸽子到齐后,按序每两只的后3位拼接成6bit,翻译成一个符号。
发ABCD时同理,模式变成4+2。
1. 可接收方怎么知道编码模式是3+3还是4+2? 可以根据飞来的鸽子总数来确定,8只就是3+3, 16只就是4+2
2+4:4只,4*4 bit = 2 字符 (余下4bit)
3+3: 8只,3*8 bit = 3 字符 (本应该有4字符,但要留1个作结束符)
4+2:16只,2*16 bit = 5字符 (余下2bit)
2. 为什么3+3要结束符号?
如果接收方暂时只收到8只鸽子,3+3和4+2这两种都有可能,因为另外8只可能在路上,原本发送方只想按4+2模式发5字符,结果接收方按3+3解码两次。
3. 怎么区分2+4和3+3?
2+4中最后一只鸽子的后4bit无用,可以全置1,也就是说最后一只就是全1。3+3是不可能出现6bit全1,因为它的结束符号是6bit全0
4. 怎么区分2+4和4+2?
后者余下2bit全置0, 也不可能出现6bit全1
5. 4+2模式下如何确定字符串长度是4还是5?6bit数据信息全0可以代表字符串的结束符,以此控制长度。
这想法可能有许多漏洞,望指正,感谢。
#阿里巴巴##笔试题目#