汉明码:奇偶校验位数



我正在尝试用java编写一种方法,该方法将接受任意数量的0或1位数字的输入,并在使用汉明码编码后输出该行。

当知道输入将具有的位数(在本例中为 16 位)时,我已经设法编写了代码,因为知道输入中的位数,我立即知道必须添加的奇偶校验位数(在这种情况下为 5)到最终输出中的总共 21 位。我正在使用 int 数组,所以我需要在开始时声明一个大小,我的代码基于这些确切的大小工作。

你们能想到任何方法/算法可以仅根据输入位数为我输出的位数(将相关奇偶校验数字添加到输入位数之后)吗?

还是我必须以完全不同的方式解决这个问题?有什么建议吗?提前谢谢你!

干杯!

根据我的理解,你在 32 位输入时获得第 6 个奇偶校验位,在 64 位输入时获得第 7 个奇偶校验位,依此类推,所以你需要的是 floor(lg(n)) + 1 ,在 Java 中你可以通过使用 32 - Integer.numberOfLeadingZeros(n) 来获得

假设您的输入完全由 0 和 1 组成,您将这样做

int parityDigits = 32 - Integer.numberOfLeadingZeros(input.length());

您的输入是字符串还是单个位? 如果输入为字符串,则可以将每个字符转换为位,字符串的长度为您提供数组的长度。

如果需要一次输入一个位,请将它们存储在 ArrayList 中。 输入所有位后,您可以轻松地将列表转换为数组,或使用列表的大小等。

相关内容

  • 没有找到相关文章

最新更新