[英]Hamming Code: Number of parity bits
我正在尝试用Java编写一个方法,该方法将接受任意数量的0或1位数字的输入,并在用汉明代码编码后输出该行。
当知道输入的位数(在本例中为16)时,我设法编写了代码,因为知道输入中的位数,我立即知道必须添加奇偶校验位的数量(本例中为5)最终输出中总共21位)。 我正在使用int数组,因此我需要在开始时声明一个大小,并且我的代码将基于这些确切的大小工作。
你们能想到仅凭输入位数就能给我输出的位数(将相关的奇偶校验位加到输入位数后)的任何方式/算法吗?
还是我必须以完全不同的方式解决这个问题? 有什么建议么? 先感谢您!
干杯!
您输入的是字符串还是单个位? 如果输入为字符串,则可以将每个字符转换为一位,并且字符串的长度为您提供数组的长度。
如果需要一次输入一位,请将它们存储在ArrayList中。 输入所有位后,您可以轻松地将列表转换为数组,或使用列表的大小等。
据我了解,您在输入的32位上获得了第六个奇偶校验位,在64位上获得了第七个奇偶校验位,依此类推,所以您需要的是floor(lg(n)) + 1
,在Java中,您可以使用32 - Integer.numberOfLeadingZeros(n)
。
假设您的输入完全由0和1组成,您将
int parityDigits = 32 - Integer.numberOfLeadingZeros(input.length());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.