繁体   English   中英

汉明码:奇偶校验位数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM