首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏MatheMagician

    纠错码与魔术(三)——汉明纠错码魔术初步

    本系列前面两篇已经介绍了纠错码的基本原理和在魔术中的应用和一些魔术例子,相关内容请戳: 纠错码与魔术(二)——魔术《矩阵感应》等 纠错码与魔术(一)——纠错码与汉明码简介 在mathematical 恰好是{0,3,4}个(00000,01011或10101,11110),而这5位里剩下的就是0了,所以做一个减法函数在上面这个集合上,得到的值域结果是{1,2,5}。 然后,这两个集合居然恰好是0:5集合的相互对立事件! 其实再用对称角度一想,这里5张2颜色选项的对称组合只有5vs0,4vs1,3vs2这么3种情况。需要构造前4个位置的copy语言成立,其解除了3vs2有两种对称的,其余还都是一致的。 扫描二维码 关注更多精彩 纠错码与魔术(二)——魔术《矩阵感应》等 破解魔术的秘密(四)——前移原理介绍和案例分享 你真的分得清“前后左右”和“东西南北”吗?

    79820编辑于 2023-01-30
  • 来自专栏MatheMagician

    纠错码与魔术(四)——汉明纠错码魔术进阶

    在上一篇中,我们介绍了两个汉明纠错码思想构造的魔术,哪两个都是最基本的应用,相关内容请戳: 纠错码与魔术(三)——汉明纠错码魔术初步 纠错码与魔术(二)——魔术《矩阵感应》等 纠错码与魔术(一)—— 纠错码与汉明码简介 而今天是本系列最后一篇,仍然是汉明编码的魔术,但是其使用的巧妙程度和层级要更深,魔术效果也更好。 比如我们可以分别用每张牌的颜色,是否偶数以及是否小于8这三个性质来为一张牌输出3bit信息,这样5张牌按照(a, b, a, b, a + b)排列以后,就会隐藏着3条编码线。 这个系列写到最后,突然想起了那个用deck switch方法做到拿走观众从5张牌中选的牌,最终达成对选牌感应的方法,感觉魔术实现的方法有时候看起来就是这么流氓。 扫描二维码 关注更多精彩 纠错码与魔术(三)——汉明纠错码魔术初步 破解魔术的秘密(四)——前移原理介绍和案例分享 你真的分得清“前后左右”和“东西南北”吗?

    79630编辑于 2023-01-30
  • 来自专栏烟草的香味

    纠错码简介

    这个时候, 纠错码出现了. 简单介绍一下, 其中所有有关数学的内容的去掉了, 毕竟太高深, 咱也不懂. 思考 因为计算机传输中只存在0和1, 所以可以简单将其类比为数字. 还记得在各个官网下载文件的时候附送的MD5校验码吗? 没错, 就是它了. 可以校验文件在传输过程中是否被损坏或是否被篡改. png image-20200509155441116 你通过计算, 发现第二行和第三列出现问题, 很快就可以定位到数字5. 计算第三列校验和: 3+5+3+3=14, 个位为4. 将5-2, 得到预测的原始数字3. 然后在计算第二行的校验和是否为0. 完成纠错. 最后将纠正后的正确的数字从中取出来. 这种纠错方式被称为: 二维奇偶校验码. ---- 计算机硬盘, 网络通信等都有着纠错码的身影, 它保证了数据的传输可靠. 在TCP的每个包中都存在校验和内容, 若校验出错, 则包会被直接丢弃.

    1.1K30发布于 2020-05-14
  • 来自专栏MatheMagician

    纠错码与魔术(一)——纠错码与汉明码简介

    今天我们来学习编码中一个非常重要的编码类型——纠错码,以及自然地,这种纠错码的思想是如何应用到魔术中的。 这一篇,我们从纠错码的基本原理说起。 此外,还有作为散列函数的循环冗余校验CRC,以及加密散列函数等,而格雷码则是在编码的过程中引入相邻数代码仅有1位不同,使得其自动具有纠错码的功能。 Hamming Code 汉明码,是一种线性纠错码,由汉明于1950年发明。相比而言,简单的奇偶校验码除了不能纠正错误之外,也只能侦测出奇数个的错误。 设待传输的信号长度为k位,我们试图寻找一个长度为n的编码,带(n - k)位纠错码,能够保证定位到1位错误以及其位置。

    1.8K30编辑于 2023-01-30
  • 来自专栏用户6811391的专栏

    QR 二维码纠错码(三)

    纠错码可以帮助 QR 读码器检测 QR 二维码中的错误并予以校正。继对文本数据编码后,本篇将继续介绍生成纠错码的过程。 在继续我们的 5-Q 例子之前,我们有必要先阐述下 Reed-Solomn 纠错方法中用到的下列步骤。 第二步:理解多项式相除 我们将采用 Reed-Solomon 纠错方法来生成纠错码。 例如 16 * 32 = 2^4 * 2^5 = 2^(4+5) = 2^9 上面计算过 2^9 = 58,因此 16*32 在 GF(256) 以 285 为模的逐字节算法下等于 58。 第八步:生成纠错码 终于,我们走到了生成纠错码这一环节。 这将生成一个包含 10 项的余数多项式,这 10 项的系数即所求的10 个纠错码。 步骤 1a:第一次相除 首先对生成多项式乘以个 alpha^5 ,因为值等于 32,得到: ?

    2.7K21发布于 2020-07-09
  • 来自专栏嵌入式项目开发

    基于纠错码的哈希函数构造方案

    HRHF算法通过结合纠错码与SM3算法的Merkle-Damgård迭代结构,不仅增强了哈希值的随机性,还保证了算法的安全性和执行效率。 HRHF算法结合了纠错码与SM3算法的Merkle-Damgård迭代结构,通过这种方式增强了哈希值的随机性。 计算纠错码的生成矩阵。 对生成矩阵进行循环左移操作以增加随机性。 对输入数据进行迭代压缩操作。 输出最终的256位哈希值。 state[0], state[1], state[2], i) + state[3] + ss2[i] + words[i]; tt2[i] = gg(state[4], state[5] ; state[5] = state[6]; state[6] = state[7]; state[7] = tt2[i]; } } // 主算法

    24200编辑于 2025-05-27
  • 来自专栏MatheMagician

    纠错码与魔术(二)——魔术《矩阵感应》等

    在本系列前面的文章里,我们已经介绍了纠错码的基本原理和Hamming码的内容,相关内容请戳: 纠错码与魔术(一)——纠错码与汉明码简介 今天我们来具体聊聊纠错码和魔术之间的关系,以及一个经典作品等。 比较神奇的是,纠错码居然可以在信息还没有到来之前就好像完成了这个编码,使得看起来是一种以不变应万变的编码方式,靠发信者自己去暴露自己的信息。 这也是纠错码原理比一般的通信编码的优势,在做出选择以后到完成辨识以前,不再需要托来传递什么信息,信息早就暗含在了纠错码代表的这些隐含关系的成立与破坏中。 视频5 A horse of a different color 视频6 Give any five cards 我们是谁: MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家 扫描二维码 关注更多精彩 纠错码与魔术(一)——纠错码与汉明码简介 破解魔术的秘密(四)——前移原理介绍和案例分享 你真的分得清“前后左右”和“东西南北”吗?

    43730编辑于 2023-01-30
  • 来自专栏用户6811391的专栏

    构建最终编码(四)

    经过生成纠错码环节,目前我们已经拥有了数据编码和其对应的纠错码。最初我们提到过,较大的 QR 二维码需要我们数据码拆成小块,而且针对每一块生成对应的纠错码。 在这种情况下,数据块和纠错码必须根据 QR 二维码规范穿插放置,本篇将解释该过程。 第一步:决定需要多少数据块和纠错码 纠错表展示了每种 QR 二维码版本在不同纠错级别下所需的数据块和纠错码数字。 将大型二维码拆分 在生成纠错码那一篇中,我们采用过一个 5-Q 二维码的例子,纠错表中可以查到 5-Q 码要分成 2 组,第 1 组包含 2 块,每块 15 个数据字节;第 2 组包含 2 块,每块 同时由纠错表查得 5-Q 码的纠错码个数为每块 18 个,这里总共有 4 个块,所以需要 4 组 18 个的纠错码。生成结果如下: ? 接下来我们看下穿插放置码块的过程。 例子中用到的版本 5 的 QR 二维码,需要在最后添加 7 位 0 的剩余字符。

    56910发布于 2020-07-09
  • 来自专栏用户4480853的专栏

    汉明码的原理及其应用

    public class Test { public static void main(String[] args) { int[] arr = {9,1,2,1,5,3,1,7,5,3,2,1,3,7,9,7,3,7,2,7,3,1,7,2,9,3,7,9,1 三四列校验 image.png 其中 1 出现的次数为 5 次**奇数**次,说明错误发生在三四列; 综合2、3得到比特翻转位发生在第3列; 4. 二四行校验 image.png 其中 1 出现的次数为 5 次**奇数**次,说明错误发生在二四行; 5. 三四行校验 image.png 其中 1 出现的次数为 4 次**偶数**次,说明错误发生在一二行; 综合4、5得到比特翻转位发生在第2行; 6. 综合3、5方法确定比特翻转错误发生在第3列第2行(6号位)上; image.png 2.2.4 问题与矛盾 Q:若错误恰巧发生在 0 号位的纠错码上,该判断方法是否会存在问题?

    2.1K00编辑于 2022-08-05
  • 来自专栏FreeBuf

    跟我一起学习玩转二维码

    把字符的个数转成二进制 (Version 1-H为9 bits ): 5个字符,5转成 000000101; (6)在头上加上编码标识 0010 和第5步的个数编码: 0010 00000010100111001110 上述的Version 5 + Q纠错级:需要4个块(2个块为一组,共两组),头一组的两个Blocks中各15个字节(数据码字)数据 加上 各 9个字节的纠错容量(18个字节的纠错码字)。 因为二进制写起来会让表格太大,所以,都用了十进制来表示,我们可以看到每一个数据块的纠错码有18个字节,也就是18个8bits的二进制数。 ? 5. 最终编码,穿插放置。 定义一个对象,设置生成的纠错码个数为10个。 ? 3. 为字符串“hello world”编码,生成纠错码。 ? 4. 进行解码 ? 5. 5. 从右下角开始,按下图的蛇形顺序读取数据码字和纠错码字的信息,至于不同区域块的信息读取顺序,可以参考官方文档。 ? ? ? 且相对应的数据块分布应该如下图所示: ? 6.

    3K41发布于 2019-06-03
  • 来自专栏程序员互动联盟

    二维码是如何实现的?

    0000001100 345→0101011001 67 →1000011 3)转成序列:0000001100 0101011001 1000011 4)字符数 转成二进制:8→0000001000 5) 3、纠错编码:按需要将上面的码字序列分块,并根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。 ,然后对每一块进行计算,得出相应的纠错码字区块,把纠错码字区块 按顺序构成一个序列,添加到原先的数据码字序列后面。 D23, D35, D2, D13, D24, D36, … D11, D22, D33, D45, D34, D46, E1, E23,E45, E67, E2, E24, E46, E68,… 5 数据和纠错码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)。

    1.2K50发布于 2018-03-15
  • 来自专栏容器云生态

    开源分布式对象存储-MinIO 顶

    为什么纠错码有用 与RAID或复制不同,纠错码可以保护数据不受多个驱动器故障的影响。 比如,在经典的RAID6中可以在损失两块盘的情况下不丢数据,然而在Minio中纠错码可以保证当一般的盘故障时依然不会影响到数据。此外,纠错码在在对象级别,并且每次就可以修复一个对象。 Minio集群实操 使用纠错码模式运行minio服务 # 使用二进制方式运行有12个驱动器的minio服务 $ minio server /data1 /data2 /data3 /data4 /data5 /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 以纠错码方式运行服务后,你就可以尝试将任意一半盘毁坏,依然不会影响整个系统的IO。 X-Amz-Date=20200122T084926Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=a02a370575cae5d5cf92c565d02918e20d734f80afed3e5eebf5fe1433aa348a

    4.8K63发布于 2020-02-18
  • 来自专栏游戏开发之旅

    二维码的生成细节和原理

    数据码和纠错码 除了上述的那些地方,剩下的地方存放 Data Code 数据码 和 Error Correction Code 纠错码。 数据编码 我们先来说说数据编码。 把这些二进制连接起来:00111001110 11100111001 000010 5. 把字符的个数转成二进制 (Version 1-H为9 bits ): 5个字符,5转成 000000101 6. 举个例子:上述的Version 5 + Q纠错级:需要4个Blocks(2个Blocks为一组,共两组),头一组的两个Blocks中各15个bits数据 + 各 9个bits的纠错码(注:表中的codewords 就是一个8bits的byte)(再注:最后一例中的(c, k, r )的公式为:c = k + 2 * r,因为后脚注解释了:纠错码的容量小于纠错码的一半) 下图给一个5-Q的示例(因为二进制写起来会让表格太大

    3.6K11发布于 2019-12-03
  • 来自专栏magicsoar

    二维码知识介绍

    数据和纠错码:记录了数据信息和相应的纠错码纠错码的存在使得当二维码的数据出现允许范围内的错误时,也可以正确解码。 版本信息       :仅在版本7以上存在,记录具体的版本信息。 图5   一些编码方式及其标识 纠错码 二维码存在4个级别的纠错等级,每个纠错级别可修正的错误与标识见图6,纠错级别越高,可以修正的错误就越多,需要的纠错码的数量也变多,相应的可储存的数据就会减少,版本 图12  坐标系和掩码运算的图案 这里我们选择标识为011的掩码 格式信息的组成为                       :纠错标识+掩码标识+BCH纠错码 所以前面的纠错标识+掩码标识为:00011 BCH纠错码计算为: ? 得到纠错码为                             :011 0101 1001 格式信息为                                :00011 1101011001

    4K100发布于 2018-02-06
  • 来自专栏琦小虾的Binary

    二维码生成原理及解析代码

    纠错码容量小于纠错码个数的一般 以上图 4.1 中的 Version 5 + H 纠错机为例:图中红色方框说明共需要 4 个块(上下行各一组,每组 2 个块)。 其中组 1 的每个块,都有 11 个数据码, 22 个纠错码;组 2 的每个块,都有 12 个数据码,22 个纠错码。 比如对于 Version 5 + H 纠错等级的二维码,剩余位需要加 7bits,即加 7 个 0。 对齐图案与尺寸大小无关,一定是一个 5×5 的矩阵。 图6.9 格式信息位置 15bits 中数据,按照 5bits 的数据位 + 10bits 纠错位的顺序排列: 数据位占 5bits:其中 2bits 用于表示使用的纠错等级 (Error Correction

    9.8K104发布于 2018-01-02
  • 来自专栏用户6811391的专栏

    手绘二维码攻略

    01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100 11101100 00010001 11101100 纠错码 通过信息多项式与生成多项式除法(过程较复杂,详情可见《QR 二维码纠错码(三)》),我们可以得到 10 个纠错码: 196 35 39 119 235 215 231 226 93 23 以上标注的黑、白、蓝色区域在 QR 版本 1 的二维码中是固定的,蓝色区域等待之后填充格式信息,浅绿色区域即我们之前得到的 128 位数据编码和 80 位纠错码要填充的区域,我们可以计算下在这 21 x 掩码只对我们填充的 208 为数据编码和纠错码进行处理,其余预先填好的功能模块和预留区域都不受掩码影响。 经过掩码处理后的 QR 二维码结果如图: ? 本来想着自己手算个 "I LOVE U" 的纠错码的,结果算到一半卡住了,只好退而求其次,选用素材中验证过的 "HELLO WORLD" 当原型来绘制二维码了。

    1.9K21发布于 2020-07-08
  • 来自专栏用户6811391的专栏

    QR 二维码布局(五)

    定位模块包含一个最外层的 7x7 码元的黑色正方外边,紧接着内部一个 5x5 码元的白色正方轮廓,最里层一个 3x3 码元的黑色正方区域。 ? 定位模块本身设计完全不同于二维码中其它模式。 一个校准模块如下图所示,包含一个 5x5 的黑色外轮廓,其内一个 3x3 的白色框,最内一个黑色码元。 ? 校准模块位置被定义在校准模块位置表中。 格式信息字符串总共 15 位长度,首先 5 位用来编码纠错级别和用到的掩码模式。然后使用这 5 位来生成一个 10 位的纠错码。 例如纠错级别 L,掩码模式 4,得到 5 位码 01100 生成 10 位纠错码 采用 Reed-Solomon 纠错算法,但该过程会更容易些,因为其多项式没有超过 15 项,而且系数只有 1 和 该 10 位结果即所求的 10 位纠错码

    2.1K32发布于 2020-07-09
  • 来自专栏小点点

    (三)《数字电子技术基础》——码制

    目录 码制定义 二-十进制码(BCD) 8421-BCD 码 2421-BCD 码 余3码 余3循环码 格雷码 检错码和纠错码 误差检验码 误差纠错码 字符-数字代码 ---- 码制定义 码制:即用数字技术来处理和传输的以二进制形式表示数字 数字系统中经常使用的码制有: 二-十进制 格雷码 误差检验码 纠错码 字符、数字代码 我们就开始对这些码制进行逐一讲解: 二-十进制码(BCD)         BCD (Binary Coded Decimal 2421-BCD的各位码也有固定的权,因而也是一种有权码; 2421-BCD的位权分别是:2、4、2、1,且其前0-4的编码与8421-BCD码相同; 2421-BCD的0和9、1和8、2和7、3和6、4和5互为反码 余3码的0和9、1和8、2和7、3和6、4和5也互为反码,即也具有反射特性,这样不仅利于对10求补(具有自补特性),而且做加法时,若两数之和为10,其和正好等于二进制数的16,于是也会从高位自动产生进位信号 误差纠错码 我们一般采用的误差纠错码是汉明码,具体介绍如下所示:          汉明距离——汉明距离是指两个等长字符串对应位置的字符不同的个数,即将一个字符串变换成另外一个字符所需要替换的字符个数

    3.9K21编辑于 2022-12-12
  • 来自专栏系统设计与开发

    分享一个在线二维码生成器(基于qrcode.js开发)

    二维码的生成原理涉及到编码过程和纠错码的生成。以下是基本的步骤: 1.数据编码:首先,需要将需要存储的数据转换为二进制码。 2.生成纠错码:为了提高二维码的识别率,需要为每个字符生成一组纠错码纠错码的作用是检测和修正错误,通常采用的是Reed-Solomon编码。 3.模块排列:将数据和纠错码按照一定的规则排列到二维码矩阵中。具体的排列方式取决于二维码的类型和版本。 QR码支持如下的编码: Numeric mode 数字编码,从0到9。

    1K10编辑于 2023-08-30
  • 来自专栏机器之心

    从本科作业到Nature子刊:悉尼大学大二学生突破困扰量子计算近20年的纠错码难题

    Brown(右) 在量子计算领域,利用量子计算机执行大规模计算可能需要基于量子纠错码的容错架构,其中面临的挑战在于设计一种使用适度资源即可有效对抗实际噪声的实用量子纠错码。 他所在的研究团队对一些常用的量子纠错码进行了简单但优雅的更改,将它们的纠错能力提升了一倍,从而缩短了实现可扩展量子计算的进程。在此之前,这种常用的纠错码已经被研究了近 20 年。 但是,Bonilla 等人的这项研究令我惊讶,我没想到量子纠错码的微小变化会对预测性能产生这么大的影响。」 Bonilla 所做的工作就是在每一秒都重新调整纠错码的一部分。这种码被称为 surface code,可以在已经连通的量子比特的二维网络中工作。 秀脑洞、玩创意,3月26日至5月31日,实战的舞台为你开启,「亚马逊云科技线上黑客松2021」等你来战!

    44720编辑于 2023-03-29
领券