2014-02-08 2 views
2

의 입력을 받아 숫자가 0 또는 1 자릿수 인 해밍 코드로 인코딩 된 후 해당 라인을 출력하는 Java에서 메소드를 작성하려고합니다.해밍 코드 : 패리티 비트 수

입력의 자릿수를 알고 있기 때문에 입력 할 자릿수 (이 경우 16)를 알면 코드를 추가해야한다는 것을 알았습니다. (이 경우 5)를 최종 출력의 합계 21 자리로 설정합니다. int 배열로 작업 중이므로 처음에는 크기를 선언해야하고 코드는 정확한 크기를 기반으로 작동합니다.

너희들은 입력 숫자의 숫자만을 기준으로 산출물이 (입력 된 숫자의 숫자에 관련된 패리티 숫자를 더한 후에) 나올 자리 수를 줄 수있는 방법이나 알고리즘을 생각할 수 있겠습니까?

아니면 완전히 다른 방식으로이 문제를 해결해야합니까? 어떤 제안? 미리 감사드립니다.

건배!

+1

할 것, 0과 1의 전체 구성되어 있습니다; http://math.stackexchange.com/에서 더 잘 물어볼 수 있습니다. –

+0

사실, 이것은 실제 프로그래밍보다 수학 문제가 더 많은 것처럼 보입니다. – Dimebag

답변

0

제 생각에 6 번째 패리티 비트는 입력 32 비트, 64 번째 비트, 그래서 당신이 필요로하는 것은 floor(lg(n)) + 1이고, java에서는 32 - Integer.numberOfLeadingZeros(n)을 사용하여 얻을 수 있습니다. 귀하의 의견을 가정

당신이

이 좋은 질문 오프 주제 것으로 보인다
int parityDigits = 32 - Integer.numberOfLeadingZeros(input.length()); 
+0

위대한 작품! 하지만 입력이 4 자리와 2의 제곱보다 큰 경우에만 가능합니다. 특히 * my *라는 용어가 내 과제에서 정의되지 않았기 때문에 이것이 좋은 것으로 생각됩니다. 고맙습니다! – Dimebag

0

입력 내용이 문자열 또는 개별 비트입니까? 문자열로 입력하면 각 문자를 비트로 변환 할 수 있으며 문자열의 길이는 배열의 길이를 제공합니다.

비트를 한 번에 하나씩 입력해야하는 경우 ArrayList에 저장하십시오. 모든 비트가 입력되면 배열을 쉽게 배열로 변환하거나 목록의 크기 등을 사용할 수 있습니다.

+0

입력에서 자릿수를 가져 오는 것은 문제가되지 않습니다. 내 질문은 : 어떻게 내 메서드를 알 수/입력 자체 자릿수를 기반으로 추가해야하는 많은 패리티 비트를 계산할 수 있도록 쓸 수 있습니까? – Dimebag

관련 문제