问题标签 [hamming-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
160 浏览

java - 当数组中的值没有填满它时如何打破循环?

我有一个数组counter[7],它总是用随机位(所以 1 和 0 位/值)来实现。此外,我还有另一个数组error_sum[7],我只想从counter[7]. 问题是,在这些错误值结束之前,我不知道如何error_sum[7]使用循环填充。for

示例(伪代码):

计数器[7] = { 1,0 ,0,1, 1,0,1 };

假设错误的位是 { 1,0 , , , 1,0,1 },所以我只想将 5 个(错误的)位移动到error_sum[7]数组中,让它们像这样:

error_sum[7] = { 1,0,1,0,1 ,NULL,NULL}

所以只有错误的位从counter[7]被移动到error_sum[7]

我知道如何移动错误的位,但我不知道如何去做,直到没有更多的错误位。我是用一个for循环来做的if(只选择错误的位),所以我有错误的位混合只有零或只有一个(位)不知道为什么。

整个我的代码:

0 投票
1 回答
2105 浏览

java - 如何通过循环重复输出和跳过数组中的某些值?

我有 array[110] 填充了整数(行)位(只有 1 和 0),我需要通过输出将它划分为少 7 行位并重复跳过,从某个(标记为数字 2 的下一个幂)开始数组 [110] 的索引到此数组 [110] 的末尾。

现在通过7个不同的行(组,数组)我的意思是位的行,从索引是数字2的下一个幂的位开始,所以:1,2,4,8,16,32 ...也在下一行(组),值必须被输出并被索引的数量跳过,这是数组中数字 2 的下一个幂。因此,例如输出 4,跳过 4... 或输出 8,跳过 8,等等到最后一组,其中数组中的索引是 2 的下一个幂。
此外,这个较小行的第一位总是被跳过或标记为未知(“?”)
我将处理数组 [110] 中的索引从 1 开始,而不是像数组中的自然那样从 0 开始 - 更容易描述我的问题。

在示例中(我在“()”中标记了数组的索引):1(1),1(2),0(3),0(4),1(5),1(6),1(7), 0(8)、1(9)、1(10)、0(11)。

在此示例中,第 1 组(输出 1,跳过 1)将是:1(1) <-unknown(?), 1(2)<-skip, 0(3)<-output, 0(4)<-skip, 1(5)<-输出,1(6)<-跳过,1(7)<-输出,0(8)<-跳过,1(9)<-输出,1(10)<-跳过,0( 11)<-output...直到数组结束[110]

第二组将是(从索引 2 开始;输出 2 并跳过 2;第一个值被认为是未知的): 1(2)<-unknown(?), 0(3)<-output, 0(4)<-skip, 1(5)<-跳过,1(6)<-输出,1(7)<-输出,0(8)<-跳过,1(9)<-跳过,1(10)<-输出,0( 11)<-output...直到数组结束[110]

第三组将是(从索引 4 开始,作为 2 的下一个幂;输出 4 并跳过 4;第一个值未知):0(4)<-unknown(?), 1(5)<-output, 1(6) <-output, 1(7)<-output, 0(8)<-skip, 1(9)<-skip, 1(10)<-skip, 0(11)<- skip...直到数组结束[110]

它是汉明码的一部分。为了更好地理解:https ://www.youtube.com/watch?v=JAMLuxdHH8o

现在,我的方法是创建 7 个不同的数组,例如 group1[]、group2[]... 并手动插入某些我想跳过的索引。然后在 for 循环中,我只用“输出”位填充每个下一个 group[] 数组。

但我想 for-loop 重复地为我做这件事。只需在此处编码以跳过每个 2、4、8(等等)值并输出每个 2、4、8(...)值。因此 7 个 group[] 数组具有不同但静态的输出和跳过“距离”。怎么做?

我的代码是:

对于后面组的更大值(这是来自第 5 组,因此从 16 索引开始 - 但由于未知而跳过它):

第二种方式更数学,因为我必须计算有多少索引跳过。但是,也许有方法可以写出多少个输出和多少个跳过?

0 投票
2 回答
94 浏览

java - 当输出值时,循环切断我数组的最后两组

我有随机 1 和 0 整数的 tab[110] 数组,所以:1001111001011110... 等等,直到数组结束。我正在尝试根据汉明码输出 7 行不同的位。我的循环有效,但仅适用于从位开始的组,数组中的索引为 2、4、8、16。对于第 32 个循环,它们中的一半被剪掉了(所以从 64 开始输出,而不是从 32 开始)并且第 64 组被完全跳过。

0 投票
1 回答
225 浏览

algorithm - 使用通用汉明算法进行奇偶校验位检查

在逻辑电路中,我有一个 8 位数据向量,该向量被馈送到 ECC IC 中,我应该为其开发逻辑,并且包含 5 个奇偶校验位的向量。我开发逻辑(使用逻辑门,XOR)的第一步是找出哪个奇偶校验位将检查哪些数据位(因为它们是交错的)。我使用偶校验,并遵循一般汉明码规则(每 2^n 一个奇偶校验位),我得到以下输出序列:

P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8 P5

遵循通用汉明算法:

对于每个奇偶校验位,位置 1、2、4、8、16 等等...(2 的幂),我们跳过第一个位置 n (n-1) 并检查 1 位,然后我们跳过另一个,检查另一个,等等......我们对其他位重复相同的过程,但这次每 2^n 检查/跳过一次,其中 n 是它们在输出数组中占据的位置 ( P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 D8 P5)

按照该约定,我得到:

P1 Checks data bits -> XOR(3 5 7 9 10 12) P2 Checks data bits -> XOR(3 6 7 10 11) P3 Checks data bits -> XOR(5 6 10 11 12) P4 Checks data bits -> XOR(9 10 11)

我对吗?让我感到困惑的是,如果我应该开始检查将奇偶校验位计数为应该检查的 2^n 位之一,或者该特定奇偶校验位之后的 1 位。几乎可以概括为是否具有包容性。

提前谢谢你的帮助!

干杯!

0 投票
1 回答
1001 浏览

testing - Verilog 程序不会读取输入

我已经用 Verilog 编写了这个程序,但是当我尝试模拟它时,它只在输出和输入变量上显示 XXXX...。我不明白我做错了什么...

PS。在我给出的模拟文件中,例如 value in = 16'b1101100100001111; #20;

0 投票
1 回答
169 浏览

java - Bit Sequence to ASCII to String

I'm trying to simulate a Hamming-Code 4,7 which is working properly. I'm working with boolean arrays insted of really bits to simplify it a bit logically. I input some Characters, there converted to ASCII and the Simulation goes on. After all I end up with an BooleanArray of length numberofcharacters*8 where every [] equals one bit. This method should just reconvert this back to ascii code and it work semiproperly. If the ASCII number is even, erverything is fine, but when it's odd the last bit it always 'forgotten'. Thanks for your help

Dear Simon

0 投票
1 回答
49 浏览

java - How to stop list from converting mix of 1s and 0s into all 0s?

I am creating a program to take in 1 or more 8 bit binary sequences and convert them into 12 bit hamming binary sequences. The code works and achieves everything right up until it tries to put the information into the JTextField at which point it converts the 8-bit stream into 1111 1111 and converts the 12 bit stream into 0000 0000 0000 (spacing for easier reading). I have tried stepping through the code and at every point it thinks the list is correct, right until i turn it into a string. Im not sure if im incorrectly using something but hopefully someone can help.

As an example for those who dont understand hamming codes. If you put in "10101010" no spaces, the system should spit out "Your original bit-stream was: 1010 1010 Your new Hamming bit-stream is: 1010 0101 1000"

But instead it will say "Your original bit-stream was: 1111 1111 Your new Hamming bit-stream is: 0000 0000 0000"

0 投票
1 回答
118 浏览

data-transfer - 汉明码和奇偶控制之间有什么关系吗?

我需要通过带有一些噪音的线路传输数据。每个传输数据包只有一个字节(8 位)。我需要接收器能够捕获错误(并且可以选择纠正其中的一些错误——但这不是必需的,因为我可以在出现错误的情况下重复传输)。

现在我知道两个选择:

  1. 汉明码(传输的 12 个数据位中的 8 个数据位)。性能非常好(单次校正和双次检测),但难以实现(或者这并不难,但我不太了解代码的概念),速度降低了 33%(冗余度为 50%)。
  2. 奇偶校验。很容易实现。但是不太可靠:只会检测到一个错误(不更正,双重错误将导致数据传输失败)。

那么是否有任何中间编码算法比奇偶控制更可靠但比汉明码容易?

0 投票
1 回答
698 浏览

encoder - 未编码的误码率与数字通信的误码率

图形

上图显示了在 AWGN 信道上使用 BPSK 在不同 Eb/No 值下的 BER(误码率)。粉红色曲线表示未编码系统的 BER(无信道编码器和解码器),而黑色曲线表示使用汉明 (7,4) 码进行信道编码的数字通信的 BER。但是,我无法解释为什么两条曲线在 6dB 处开始相交和交叉。

0 投票
1 回答
2353 浏览

crc - 何时应使用汉明码,何时使用 crc 更好?

以下是我已经知道的关于这些的事情:

  • 汉明码可用于检测和纠正错误,而在 crc 中只能检测错误。

  • CRC用于通信,而汉明码用于检测存储磁盘中的错误

我的主要问题是使用一种代码比另一种代码有什么优势?