Java 汉明码:奇偶校验位数
我正在尝试用java编写一个方法,该方法将接受任意数量的0或1位数的输入,并在使用汉明码编码后输出该行 当知道输入的位数(在本例中为16位)时,我成功地编写了代码,因为知道输入的位数后,我立即知道必须将奇偶校验位的数量(在本例中为5位)添加到最终输出的总共21位中。我正在使用int数组,所以我需要在开始时声明一个大小,我的代码基于这些精确的大小工作 你们能想出任何方法/算法,只根据输入位数给我输出的位数(在将相关奇偶校验位数添加到输入位数之后) 还是我必须以完全不同的方式解决这个问题?有什么建议吗?提前谢谢你Java 汉明码:奇偶校验位数,java,algorithm,hamming-code,Java,Algorithm,Hamming Code,我正在尝试用java编写一个方法,该方法将接受任意数量的0或1位数的输入,并在使用汉明码编码后输出该行 当知道输入的位数(在本例中为16位)时,我成功地编写了代码,因为知道输入的位数后,我立即知道必须将奇偶校验位的数量(在本例中为5位)添加到最终输出的总共21位中。我正在使用int数组,所以我需要在开始时声明一个大小,我的代码基于这些精确的大小工作 你们能想出任何方法/算法,只根据输入位数给我输出的位数(在将相关奇偶校验位数添加到输入位数之后) 还是我必须以完全不同的方式解决这个问题?有什么建议
干杯 您的输入是字符串还是单个位?如果以字符串形式输入,则可以将每个字符转换为一位,字符串的长度即为数组的长度
如果需要一次输入一个位,请将它们存储在ArrayList中。输入所有位后,您可以轻松地将列表转换为数组,或者使用列表的大小等。据我所知,您可以在32位输入处获得第6个奇偶校验位,在64位获得第7个奇偶校验位,等等。因此,您需要的是
floor(lg(n))+1
,在java中,您可以使用32-Integer.numberofleadingzero(n)
获得它
假设您的输入完全由0和1组成,您可以这样做
int parityDigits = 32 - Integer.numberOfLeadingZeros(input.length());
这个伟大的问题似乎离题了;最好是继续提问和回答。事实上,这似乎更像是一个数学问题,而不是实际的编程。这非常有效!但仅当输入大于4位数且幂为2时。我想这是最好的,尤其是因为我的作业中没有定义任何术语。非常感谢。获取输入中的位数不是问题。我的问题是:我如何编写,使我的方法能够根据输入中的位数自行知道/计算必须添加多少奇偶校验位?