我正在尝试在java中编写一个方法,该方法将输入任意数字的0或1位数,并在使用汉明码进行编码后输出该行。
我知道输入所具有的位数(在这种情况下为16)时设法编写代码,因为知道输入中的位数,我立即知道必须添加的奇偶校验位数(在这种情况下为5)在最终输出中总共21位数。我正在使用int数组,所以我需要在开头声明一个大小,我的代码根据这些确切的大小工作。
你能想到任何方法/算法可以根据输入数字的数量给出输出所具有的位数(在将相关的奇偶校验位数加到输入数字之后)吗?
或者我是否必须以完全不同的方式解决这个问题?有什么建议?提前谢谢!
干杯!
答案 0 :(得分:0)
您的输入是字符串还是单个位?如果输入为String,则可以将每个字符转换为一个位,String的长度为您提供数组的长度。
如果需要一次输入一个位,请将它们存储在ArrayList中。输入所有位后,您可以轻松地将列表转换为数组,或使用列表的大小等。
答案 1 :(得分:0)
根据我的理解,你得到你的第6个奇偶校验位在32位输入,第7位在64位等等所以你需要的是floor(lg(n)) + 1
,在java中你可以使用32 - Integer.numberOfLeadingZeros(n)
获得。
假设您的输入完全由0和1组成,您可以
int parityDigits = 32 - Integer.numberOfLeadingZeros(input.length());