问题标签 [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 回答
50 浏览

c++ - 带有嵌套 if 的 for 循环被破坏,并将所有 1 而不是数据传输到数组

经过几个小时的测试后,我将问题缩小到单个 for 循环,而不是嵌套的 for 循环(第 64 行),如果将数据从 converMain[] 传输到 converMain1[],所有数据都设置为 1,Ive通过,其他一切正常,它只是这个 for 循环。

输出:

我们应该期望最右边的数字在中间被串成数字,而箭头忽略箭头的位置,因为这些是模仿位,并且在放下数组的其余部分之前移动它们。

0 投票
4 回答
18377 浏览

c - 是什么导致 C 中出现分段错误(核心转储)?

我正在尝试用 C 编写汉明代码程序。但是,在编译后尝试运行 ./a.out 时,我不断收到分段错误(核心转储)错误。它编译时没有错误,我知道在尝试解决释放空间或修改字符串文字时可能会发生此错误。我不相信我在做这两件事,我只是有一个简单的矩阵我正在填写和交叉检查。对此问题的任何见解都将不胜感激,我已经在下面留下了到目前为止的代码:

这是一个家庭作业问题,涉及创建一个汉明代码程序来处理 data.dat 输入并将 1 和 0 的排序列表输出到文件

我希望输出到文件。我并不总是收到此错误,但是当我从 2D 数组更改为 1D 数组时,我现在收到此错误(我更改是因为我意识到没有必要)

0 投票
1 回答
718 浏览

java - 如何在不转换为二进制字符串的情况下计算汉明码?

我正在尝试解决一个问题,即在不使用 java 中长数字的二进制字符串的情况下找到汉明码。

我不明白我们怎么能做到这一点,我在很多地方搜索过,比如维基百科的解释和我在网上找到的这个,但它们都需要二进制字符串才能使用,但在这种情况下我不能使用它们。

我有一个代表输入二进制的长数字,现在我需要找到汉明码。

据我了解,我可以在该二进制文件中的位置 1、2、8 ... 处放置空白位置。现在我可以使用布尔值将 0 或 1 放在那个位置,该布尔值告诉我这是偶数还是奇数。

我使用字符串和列表编写了一个代码,但我需要在不使用字符串或列表的情况下这样做。

但这需要我使用二进制字符串或列表,我该如何处理长数字,比如 210。

我对位操作真的很陌生,因此我无法解决这个问题。我真的很感激任何帮助。

0 投票
0 回答
315 浏览

c - 使用公式解码汉明码(7,4)

目前我正试图提出一个公式解码汉明(7,4)。到目前为止,没有一个人给我一致的正确解决方案。

我用谷歌搜索了很多,但找不到正确的信息。我的实现使用与正常不同的奇偶校验和数据位位置,但我不想更改它。

奇偶校验位:

在此处输入图像描述

我的字节看起来像这样;

我尝试检查圆圈的奇偶性并添加 1 和 0 以获得二进制数。

在网上也找到了这个公式;

这也不起作用

目前我还没有代码,因为我首先需要弄清楚这个问题的逻辑/公式。

我的实际结果不一致,我试图想出一个公式来给我一个正确的解决方案。最好使用位操作,就像我尝试使用圆圈中偶数/奇数的结果一样。

0 投票
0 回答
95 浏览

c++ - 从.txt 读取位?

有人可以帮助或指出我正确的方向吗?

我正在尝试从 .txt 文件中读取 16 个数字(全为 1 和 0)并将每个数字存储到一个数组中。这是我目前正在尝试的

我在 1110100111010110 中尝试阅读的示例

我在控制台中得到了一堆随机的废话打印

0 投票
1 回答
878 浏览

algorithm - 如何计算 (31,26) 的汉明码?

我需要构造 0x444 的 (31,26) 汉明码。

在阅读了维基百科和 GeeksForGeeks 中显示的算法后,我仍然无法理解这是如何工作的,因为我的构造最终与我在互联网上找到的计算器的结果不同。

我的结果是:0100 0100 0010 0010 或 0x4422 是否正确?

据我了解:P1 = 按位 XOR(C1,C3,C5,C7,C9,C11,C13.C15,C17..) = 0

P2 = 按位异或(C2,C3,C6,C7,C10,C11,C14,C15..) = 1

P3 = 按位异或(C4,C5,C6,C7,C12,C13,C14,C15..) = 0

P4 = 按位异或(C8,C9,C10,C11,C12,C13,C14,C15..) = 0

P5 = 按位 XOR(C16,C17..) = 0

我无法理解的另一件事..如果(31,26)汉明码应该输出具有5个奇偶校验位和26个数据位的31位结果..为什么(7,4)汉明码将每个4位转换为7位表示,而不仅仅是 7 位和 3 个奇偶校验位的 1 个表示?

谢谢。

0 投票
1 回答
451 浏览

binary - 这个汉明码 10101011110 有错误吗?

假设我们正在使用一个纠错码,它将允许对长度为 7 的内存字纠正所有单位错误。我们已经计算出需要 4 个校验位,所有码字的长度将为 11。码字是根据文中介绍的汉明算法创建的。我们现在收到以下代码字: 1 0 1 0 1 0 1 1 1 1 0 假设偶校验,这是一个合法的代码字吗?如果不是,根据我们的纠错码,错误在哪里?

Ps 需要一些帮助来解决这个汉明码问题,这是一本书的问题。提前致谢 :)

0 投票
0 回答
329 浏览

c++ - 任意长度的汉明码编码器(二进制矩阵向量乘法,在 CPU 上,与平台无关)

该问题似乎非常适合 GPU、FPGA 等(因为它非常并行);但我现在正在寻找一种基于 CPU 且在某种程度上独立于架构的解决方案。我认为一个好的答案可能只是一些未实现的伪代码,但我的程序是纯 C++20,所以答案应该与该上下文相关(例如,不要假设像 Python 这样非常高级的东西,不要使用编译器特定的内在函数或程序集)。我并不期待令人兴奋的性能,但我确实希望答案比我已经拥有的三个实现快得多(在这个文件):一种非常幼稚的方法,没有生成器矩阵,以及一种幼稚的“将输入向量与密集生成器矩阵相乘”方法。答案应该适用于任意码字和输入长度,但重要的码字长度在 2000 位以下,小输入长度并不重要。

一些预备知识:所讨论的二进制数的加法和乘法分别定义为“异或”(XOR)和“与”逻辑/按位运算。这扩展到二进制矩阵乘法。

汉明码是旧的和众所周知的二进制线性块错误检测/纠正码。每个码字是一串位,其中一些位位置被指定为奇偶校验位,用于错误检测和纠正,而其余位是数据位,如果没有错误,它们只是输入位的副本。我们只考虑奇偶校验位位于传统的二次幂位置的汉明码(即,基于 1 的编号:位 1、位 2、位 4、位 8,...)。因此,每个可能的代码都可以使用它的长度n(代码字中的位数)或它的等级k(代码字中的数据位数)来确定。汉明码可以称为(n, k),例如,(7, 4)(40, 34)

每个代码都有一个生成矩阵,一个二进制矩阵,输入向量可以与该矩阵相乘以获得一个代码字。因此,某个代码的代码字集合正是生成矩阵的行的线性组合集合。

所需的程序基本上是一个编码器:它以一(n, k)对作为输入来提供代码(是的,这是多余的 - 本质上只需要一对)和一个任意二进制消息,将消息分成k-bits long sub-消息并输出一系列 - 位n长码字,每个码字编码一个子消息。

我希望在这里得到一个利用特定于我们的生成器矩阵的属性的答案(例如,生成器矩阵的特殊表示和特殊的向量矩阵乘法算法),所以这里是一些代码的生成器矩阵的示例:

汉明码(3, 1)(只有代码字000111):

汉明码((5, 2)只有代码字0000011100和):1001101111

汉明码(6, 3)

(注意每个生成矩阵如何包含所有较小代码的生成矩阵。)

汉明码(150, 142)(所有零都留空,所以那些会更突出):

请注意,在大多数生成器矩阵的所有零中,零的数量相对较少,而且这些矩阵肯定有一个模式,甚至是形状。

我在这里的所有相关领域都很薄弱,所以请尝试纠正我犯的任何可能的错误。

0 投票
3 回答
113 浏览

python - 如何在一段时间内或for循环python中转换汉明数字代码

嗨,我需要打印汉明数,但我只能使用 if 循环来完成。如何使用 for 或 while 循环来做到这一点?

0 投票
1 回答
82 浏览

matlab - 为什么我计算的结果与matlab计算的不同?

这是matlab的答案:

我根据汉明码的定义计算了汉明码,这是我的计算过程:

如果我使用奇校验位,那么它会像:

但如果我使用偶校验位,它会像:

以上都不等于matlab计算的结果。我想知道为什么,如果有人可以回答我的问题,我会很高兴。谢谢!