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

math - 锦标赛图表中的格雷码模式?

在从底部到顶部的锦标赛图表中,我被告知它与格雷码有某种联系。我知道格雷码是一种替代代码,它是递归的,有助于在各种游戏、空间填充曲线、纠错码、硬盘定位中找到最佳解决方案,并且是钢琴演奏者的简写,但这个代码如何与锦标赛图表有关吗?

0 投票
1 回答
677 浏览

binary - 借助二进制表示生成幂集

我知道“幂集只是 0 到 2^N-1 之间的任意数字,其中 N 是集合成员的数量,二进制表示中的一个表示存在相应的成员”。

( Hynek-Pichi-Vychodil )

我想使用从二进制表示到实际集合元素的这种映射来生成一个幂集。

我怎么能用 Erlang 做到这一点?

我试图修改这个,但没有成功。

UPD:我的目标是编写一个迭代算法,在不保留堆栈的情况下生成一个集合的幂集。我倾向于认为二进制表示可以帮助我解决这个问题。

是 Ruby 中成功的解决方案,但我需要用 Erlang 编写。

UPD2: 是伪代码的解决方案,我想在 Erlang 中做类似的事情。

0 投票
1 回答
710 浏览

php - PHP 格雷码 - XOR 错误

我在php中编写了这个函数来做一个数字的格雷码

问题在于异或。如果我打印$xor数组,则只有我放入的第一个元素$xor[]=reset(str_split($bin));

我哪里错了?

0 投票
2 回答
421 浏览

binary - 奇怪的格雷码 - 高效解码

我试图找出一种从奇怪的格雷码到二进制反射格雷码或正常二进制的有效方法。

The pattern goes:
000000
000001
000101
000100
000110
000111
010111
010110
010100
010101
010001
010000
010010
010011
011011
011010
011000
011001
001101
011100
011110
011111
1011111
1011110
1011100
1011101
and so on...

它最多使用 12 位。

0 投票
3 回答
1930 浏览

binary - 为什么格雷码是二进制代码中位的异或位

我清楚地理解了格雷码的目的。 EE Times:格雷码基础

但是我无法从概念上理解为什么可以如下生成格雷码

G i = B i+1 ⊕ B i , i = n - 1, . . . , 0,其中 B n取为 0。

有人可以在概念上帮助我。

0 投票
1 回答
2787 浏览

vhdl - VHDL 格雷码计数器

我正在尝试使用移位寄存器和 4-1 MUX 实现格雷码计数器。有谁知道要使用什么逻辑?!

谢谢

0 投票
2 回答
6777 浏览

c++ - 二进制到格雷码,反之亦然

所以我想编写一个程序,将二进制值作为输入并将其转换为格雷码,反之亦然。

这是我最初写的:

现在这适用于 4 位,但是

  1. 我想要一些东西来确定用户在运行时输入的二进制/灰色代码的大小。

    我做了一些研究,发现在这种情况下使用向量,但是因为在大学里我们刚刚开始使用 C++,所以我对向量甚至数组都不熟悉。还有什么我可以用来实现它的吗?如果没有,谁能告诉我如何使用向量?

  2. 其次,我想在一行中输入没有空格。

    例子:

    1011而不是1 0 1 1或在单独的行中为每个位获取输入。

  3. 现在我也意识到我将无法知道否。位提前,所以我用来实现异或运算的位公式也会改变。是否可以声明一个二进制和格雷码bool变量,并以某种方式对这些变量执行 XOR 操作,而不是使用更简单的语句而不是复杂的单个位?

0 投票
4 回答
8308 浏览

c - 格雷码增量功能

在不使用任何外部计数器或其他状态的情况下,我正在寻找一个有效的函数,它采用 n 位值(32 位或左右)并以格雷码返回后续值。

那是:

但是,虽然binary_to_gray()函数是微不足道的 ( x ^ (x >> 1)),但对应的函数gray_to_binary()一点也不微不足道(log(n)迭代循环)。

也许有更有效的操作顺序?无论是标准反射格雷码,还是选择适合此问题的另一个格雷码。


另外: 我看到这个问题有两种可能的解决方案类型——一种是选择一个更容易转换为二进制的代码并使用上面给出的形式(或者演示一个更有效的反射代码到二进制的转换),以及另一种是完全推迟到二进制的转换,并产生一种在不使用二进制增量的情况下遍历格雷码的方法。

在后一种情况下,将生成的代码转换为二进制可能特别困难。实际上,这可能是不利的一面,但这仍然是一件有趣的事情。


更新: 由于有人指出格雷解码只是log(n)操作(使用两种不同技术中的任何一种),我花了一些时间试图弄清楚这是否是对事情可以简化的严格限制。在确定要执行的下一个操作时,必须考虑所有位,否则“考虑”位将无法更改,并且函数将在两个值之间振荡。输入必须以某种方式压缩到可管理的规模,以确定下一个要执行的操作。

为了使其log(n-k)操作,可以使用 2 k条目 LUT 来缩短最后的k操作(评论建议k=32)。

我想到的另一种通常可以非常快速地减少事物的技术是乘法和位掩码的组合。例如,计算奇偶校验以实现基于奇偶校验的算法。

从乘法和位掩码方法来看,似乎可能有空间发明格雷码,它可以进一步简化操作集......但我不认为有任何这样的代码是已知的。

0 投票
2 回答
1182 浏览

java - 用二进制数填充矩阵,常规和格雷编码

我有一个包含 1:s 或 0:s 的矩阵,创建二进制数。它的宽度是 n。对于 n = 2 和 n = 3,它看起来像:

等等。现在我正在使用以下代码来生成它。

现在我需要帮助来创建相同但灰色编码的东西。在java中有没有方便的方法来做到这一点?另外,如果有一种更聪明的方法来做我上面所做的事情,我很乐意学习。

我真的不知道从哪里开始,因为我已经习惯了toBinaryString()帮助我。编辑:格雷码将如下所示:

0 投票
1 回答
2723 浏览

vhdl - 通用二进制-灰度、灰度-二进制转换器、逻辑错误

它向我显示了一个错误: ERROR:Xst:787 - "E:/tumama/tytyty.vhd" line 54: Index value <4> is not in Range of array 。

它是一个“通用”代码,我的嵌入信号 A 具有 n 的 5 位,我只想在一个案例中使用 4 位进行转换。所以我在 Y 中有 4 位注释是针对并发代码的

但我不明白谢谢