问题标签 [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.
c++ - 带有嵌套 if 的 for 循环被破坏,并将所有 1 而不是数据传输到数组
经过几个小时的测试后,我将问题缩小到单个 for 循环,而不是嵌套的 for 循环(第 64 行),如果将数据从 converMain[] 传输到 converMain1[],所有数据都设置为 1,Ive通过,其他一切正常,它只是这个 for 循环。
输出:
我们应该期望最右边的数字在中间被串成数字,而箭头忽略箭头的位置,因为这些是模仿位,并且在放下数组的其余部分之前移动它们。
c - 是什么导致 C 中出现分段错误(核心转储)?
我正在尝试用 C 编写汉明代码程序。但是,在编译后尝试运行 ./a.out 时,我不断收到分段错误(核心转储)错误。它编译时没有错误,我知道在尝试解决释放空间或修改字符串文字时可能会发生此错误。我不相信我在做这两件事,我只是有一个简单的矩阵我正在填写和交叉检查。对此问题的任何见解都将不胜感激,我已经在下面留下了到目前为止的代码:
这是一个家庭作业问题,涉及创建一个汉明代码程序来处理 data.dat 输入并将 1 和 0 的排序列表输出到文件
我希望输出到文件。我并不总是收到此错误,但是当我从 2D 数组更改为 1D 数组时,我现在收到此错误(我更改是因为我意识到没有必要)
java - 如何在不转换为二进制字符串的情况下计算汉明码?
我正在尝试解决一个问题,即在不使用 java 中长数字的二进制字符串的情况下找到汉明码。
我不明白我们怎么能做到这一点,我在很多地方搜索过,比如维基百科的解释和我在网上找到的这个,但它们都需要二进制字符串才能使用,但在这种情况下我不能使用它们。
我有一个代表输入二进制的长数字,现在我需要找到汉明码。
据我了解,我可以在该二进制文件中的位置 1、2、8 ... 处放置空白位置。现在我可以使用布尔值将 0 或 1 放在那个位置,该布尔值告诉我这是偶数还是奇数。
我使用字符串和列表编写了一个代码,但我需要在不使用字符串或列表的情况下这样做。
但这需要我使用二进制字符串或列表,我该如何处理长数字,比如 210。
我对位操作真的很陌生,因此我无法解决这个问题。我真的很感激任何帮助。
c++ - 从.txt 读取位?
有人可以帮助或指出我正确的方向吗?
我正在尝试从 .txt 文件中读取 16 个数字(全为 1 和 0)并将每个数字存储到一个数组中。这是我目前正在尝试的
我在 1110100111010110 中尝试阅读的示例
我在控制台中得到了一堆随机的废话打印
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 个表示?
谢谢。
binary - 这个汉明码 10101011110 有错误吗?
假设我们正在使用一个纠错码,它将允许对长度为 7 的内存字纠正所有单位错误。我们已经计算出需要 4 个校验位,所有码字的长度将为 11。码字是根据文中介绍的汉明算法创建的。我们现在收到以下代码字: 1 0 1 0 1 0 1 1 1 1 0 假设偶校验,这是一个合法的代码字吗?如果不是,根据我们的纠错码,错误在哪里?
Ps 需要一些帮助来解决这个汉明码问题,这是一本书的问题。提前致谢 :)
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)
(只有代码字000
和111
):
汉明码((5, 2)
只有代码字00000
、11100
和):10011
01111
汉明码(6, 3)
:
(注意每个生成矩阵如何包含所有较小代码的生成矩阵。)
汉明码(150, 142)
(所有零都留空,所以那些会更突出):
请注意,在大多数生成器矩阵的所有零中,零的数量相对较少,而且这些矩阵肯定有一个模式,甚至是形状。
我在这里的所有相关领域都很薄弱,所以请尝试纠正我犯的任何可能的错误。
python - 如何在一段时间内或for循环python中转换汉明数字代码
嗨,我需要打印汉明数,但我只能使用 if 循环来完成。如何使用 for 或 while 循环来做到这一点?
matlab - 为什么我计算的结果与matlab计算的不同?
这是matlab的答案:
我根据汉明码的定义计算了汉明码,这是我的计算过程:
如果我使用奇校验位,那么它会像:
但如果我使用偶校验位,它会像:
以上都不等于matlab计算的结果。我想知道为什么,如果有人可以回答我的问题,我会很高兴。谢谢!