2014-02-08 7 views
2

Я пытаюсь написать метод в java, который будет принимать любое число 0 или 1 цифру и выводить эту строку после кодирования кодом Хэмминга.Код Хэмминга: количество бит четности

Мне удалось написать код, зная количество цифр, которое будет иметь вход (в данном случае 16), потому что, зная количество цифр на входе, я сразу же узнаю, сколько бит четности должно быть добавлено (5 в этом случае) до 21 цифры в конечном выходе. Я работаю с массивами int, поэтому мне нужно объявить размер в начале, и мой код работает на основе этих точных размеров.

Можете ли вы, ребята, подумать о любом способе/алгоритме, который может дать мне количество цифр, которые будут иметь выходные данные (после добавления соответствующих цифр четности к числу входных цифр), основанных исключительно на количестве входных цифр?

Или мне нужно решить эту проблему совершенно по-другому? Какие-либо предложения? Заранее спасибо!

Cheers!

+1

появляется Это большой вопрос, чтобы быть вне темы; лучше спросить и ответить на http://math.stackexchange.com/. –

+0

Действительно, это скорее вопрос математики, чем реальное программирование. – Dimebag

ответ

0

С моей точки зрения, вы получаете свой 6-й бит четности в 32 бит ввода, 7-й в 64, и т. д., так что вам нужно floor(lg(n)) + 1, который в java вы можете получить, используя 32 - Integer.numberOfLeadingZeros(n).

Предположим, что ваш вклад состоит исключительно из 0 и 1, вы могли бы сделать

int parityDigits = 32 - Integer.numberOfLeadingZeros(input.length()); 
+0

Это отлично работает! но только в том случае, если входной сигнал превышает 4 цифры и степень 2. Я думаю, что это так хорошо, как кажется, особенно потому, что термин * any * не определен в моем задании. Спасибо! – Dimebag

0

Является ли ваш ввод строковым или отдельным битом? Если вы введете как String, вы можете преобразовать каждый символ в бит, а длина строки укажет длину массива.

Если вам нужно вводить бит по одному, сохраните их в ArrayList. Когда все биты введены, вы можете легко преобразовать свой список в массив или использовать размер списка и т. Д.

+0

Получение количества цифр на входе не является проблемой. Мой вопрос: как я могу написать так, что мой метод будет знать/самостоятельно вычислять, сколько бит четности нужно добавить, исходя из количества цифр во входном? – Dimebag

Смежные вопросы