簡體   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