2

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

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

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

还是我必须以完全不同的方式解决这个问题?有什么建议么?先感谢您!

干杯!

4

2 回答 2

0

据我了解,您在 32 位输入时获得第 6 个奇偶校验位,在 64 位获得第 7 个奇偶校验位,等等。所以您需要的是floor(lg(n)) + 1,在 java 中您可以通过使用32 - Integer.numberOfLeadingZeros(n).

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

int parityDigits = 32 - Integer.numberOfLeadingZeros(input.length());
于 2014-02-08T16:28:59.963 回答
0

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

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

于 2014-02-08T16:20:51.217 回答