Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 汉明码:奇偶校验位数_Java_Algorithm_Hamming Code - Fatal编程技术网

Java 汉明码:奇偶校验位数

Java 汉明码:奇偶校验位数,java,algorithm,hamming-code,Java,Algorithm,Hamming Code,我正在尝试用java编写一个方法,该方法将接受任意数量的0或1位数的输入,并在使用汉明码编码后输出该行 当知道输入的位数(在本例中为16位)时,我成功地编写了代码,因为知道输入的位数后,我立即知道必须将奇偶校验位的数量(在本例中为5位)添加到最终输出的总共21位中。我正在使用int数组,所以我需要在开始时声明一个大小,我的代码基于这些精确的大小工作 你们能想出任何方法/算法,只根据输入位数给我输出的位数(在将相关奇偶校验位数添加到输入位数之后) 还是我必须以完全不同的方式解决这个问题?有什么建议

我正在尝试用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时。我想这是最好的,尤其是因为我的作业中没有定义任何术语。非常感谢。获取输入中的位数不是问题。我的问题是:我如何编写,使我的方法能够根据输入中的位数自行知道/计算必须添加多少奇偶校验位?