gray-code相关内容

格雷码增量功能

不使用任何外部计数器或其他状态,我正在寻找一个高效函数,它接受一个 n 位值(32 位左右)并在 格雷码. 即: int fn(int x){int y = gray_to_binary(x);y = y + 1;返回 binary_to_gray(y);} 虽然 binary_to_gray() 函数很简单(x ^ (x >> 1)),但相应的 gray_to_binary()> 一点 ..
发布时间:2021-12-20 16:24:56 其他开发

格雷码算法(32 位或更少)

我最近遇到了格雷码,我一直在努力思考用于将格雷码转换回二进制(32 位或更少)的高效算法. num = num ^ (num >> 16);num = num ^ (num > > 8);num = num ^ (num >> 4);num = num ^ (num > > 2);num = num ^ (num >> 1); 这是我说的代码.下面是我的问题: 这和普通代码有什么区别(右 ..
发布时间:2021-10-26 18:42:34 其他开发

增加二进制的效率->8086的格雷码

我是汇编的初学者,这是我设计的代码,用于从二进制转换为灰色,并以十六进制打印所得的位模式. 电影,一个mov bl,alshr bl,1Xor Al,BL 尽管程序正在运行,但我想学习其他更简单的方法来提高效率,但我尝试了许多其他方法,但它会影响输出. 解决方案 (此答案是根据问题的第一个版本编写的,该版本中存在一些尚未优化的代码,并且是的完整源代码.exe程序.对该问题的更新已删除 ..
发布时间:2021-05-14 18:31:38 其他开发

带有Itertools的格雷码顺序的笛卡尔积?

是否有类似Python的itertools.product()这样的东西,它以灰色代码顺序通过一组集合的笛卡尔积提供迭代?例如,假设存在这样一个假设生成器,并将其称为gray_code_product(),则gray_code_product(['a','b','c'], [0,1], ['x','y'])将按照以下顺序生成: ('a',0,'x') ('a',0,'y') ('a',1,' ..
发布时间:2020-07-23 04:09:04 Python

{1,...,n}的所有k个元素子集的格雷码

我正在寻找一种迭代n个元素集的所有k个元素子集的算法.我不想显式地生成所有这些子集. 有一个简单的算法可以做到这一点,即按字典顺序对相应的位向量进行排序,然后从当前子集转到下一个子集. 尽管如此,我仍在寻找一种算法,该算法在每个步骤中仅切换2位.我已经读过这样的代码称为“灰色代码",但是我没有找到解决我的问题的算法. 是否有直接的实现方法? 解决方案 这不会是一个完整的答 ..
发布时间:2020-07-23 04:09:01 其他开发

迭代格雷码更改位置的有效方法

有多种方法可以迭代 n位格雷码.有些比其他的更有效率.但是,我实际上不需要格雷码,而是想遍历格雷码列表中更改的位索引,而不是实际的格雷码.例如,请使用以下3位格雷码列表: 000,001,011,010,110,111,101,100 我想输出3、2、3、1、3、2、3.这告诉我们我们需要更改位3、2、3等以获取列表.在这里,我从1开始,从左开始索引. 执行此操作的一种方法是依次 ..
发布时间:2020-07-23 04:08:57 其他开发

生成格雷码.

我尝试在 Python 中生成格雷码.此代码正常工作.问题是我正在初始化main函数中的基本情况(n=1,[0,1]),并将其传递给gray_code函数以计算其余部分.我想在函数本身内部生成所有格雷码,包括基本情况.我该怎么办? def gray_code(g,n): k=len(g) if n ..
发布时间:2020-07-23 04:08:53 Python

从第(n-1)个格雷码派生第n个格雷码

有没有办法通过对第(n-1)个格雷码进行位操作来使用第(n-1)个格雷码导出第4位第n个格雷码? 例如,第4个格雷码是0010.现在,我想通过对0010进行位运算来获得第5个格雷码0110. 解决方案 也许是“作弊",但您可以将查找表打包成64位常量值,如下所示: 0000 0 -> 1 0001 1 -> 3 0011 3 -> 2 0010 2 -> 6 0110 6 -> ..
发布时间:2020-07-23 04:08:50 其他开发

选择一些用格雷码编码的数字

我必须编写一个程序,以格雷码显示一些数字。我已经在此页面中找到了用C ++编写的算法(”> https://www.geeksforgeeks.org/given-a-number-n-generate-bit-patterns-from -0到2n-1,所以成功的模式相差一比特/ )。 但是我想创建一种新的方法来删除连续有两个“ 1”并且在末端(左右)有“ 1”的数字。 示例:对于n ..
发布时间:2020-06-03 21:41:45 C/C++开发

高尔夫代码:格雷码

挑战 按字符数计数的最短程序,输出n位灰色代码。 n 是小于 1000 100000 (由于用户建议),取自标准输入。格雷码将打印在标准输出中,例如在示例中。 注意:我不希望程序执行此操作在合理的时间内打印出格雷码( n = 100000 是过大的);我确实希望它能够开始打印。 示例 输入: 4 预期产量: 0000 0001 ..
发布时间:2020-06-03 19:56:44 其他开发

如何找到恒定时间在格雷码中更改的下一位?

我有一个小型的8位处理器,在某些输出线上具有N-to-M解码器-例如,对于5到32位的情况,我写00101,第5位改变状态.输出的唯一接口是更改状态,没有回读. 设备会快速(但随机)计数发生的事件,并应将此计数作为“单个位更改"代码提供给另一台设备.输出引脚由另一台设备并行读取,并且可能根据另一台设备的决定而快速或谨慎地读取,因此计数是必需的. 我不需要使用标准的二进制反光格雷代码-我 ..
发布时间:2020-04-27 03:39:07 其他开发

格斗码格局在锦标赛中?

在从底部到顶部的比赛图表中,有一个获胜者,我被告知,它以某种方式与灰色代码相关联。我知道灰色代码是一个替代代码,它是递归的,有用的是找到各种游戏,空格填充曲线,纠错码,硬盘定位的最佳解决方案,是钢琴演奏者的缩写,但是这个代码如何与锦标赛图表有关吗? 解决方案 从 here : 二叉树中的一个节点。每个 节点中的值包含 锦标赛树中最佳排名队伍的排名。事实证明,排名-1的灰色代码有 ..
发布时间:2017-05-14 11:16:19 软件设计

如何找到,如果两个数字都在灰色code顺序连续编号

我想拿出一个解决方案,这两个数字的问题,发现如果他们是灰色code顺序即连续编号,如果是灰色code邻居假设灰色code序列没有被提及。 我搜索的各种论坛,但不能得到正确的答案。这将是巨大的,如果你能提供一个解决方案。 我试图问题 - 转换两个整数二进制并在这两个数字分别添加数字,并找到在两个数的数字的总和之间的差。如果差异之一,那么他们是灰色code邻居。 但我觉得所有的情况下,这不会工作 ..
发布时间:2016-08-19 16:31:48 Java开发

非递归灰色code算法的理解

这是从算法的书的任务。 的事情是,我完全不知道从何说起! 跟踪以下非递归算法生成二进制反思 订单4.启动所有0的N位串灰色code。 对于i = 1,2,... 2 ^ n-1个,生成翻转比特b的第i个位串 previous比特串,其中b是在的至少显著1的位置 二重$ P $ i的psentation。 所以我知道格雷code 1位应该是 0 1 2 00 01 11 10 等。 ..
发布时间:2015-11-30 22:06:41 C/C++

算法生成"防灰"从n个k个元素按需组合

我想实现一个算法来获得k个元素的所有组合出一套n个元素,其中连续两个组合之间的差异最大化的(一种使反向灰色codeS)。换言之,该组合要责令避免从连续出现两次的元素,并且从而没有元件被不必要地鉴别 理想地,该算法也将不会$ P $对 - 计算所有组合,并将它们存储到存储器,而是提供的组合上的需求。 我寻觅广泛,这和发现了一些详细的解答,如 http://stackoverflow.com/a/1 ..
发布时间:2015-11-30 20:31:21 C/C++

第n个灰色code

的计算公式第n个灰色code是: (N-1)XOR(楼((N-1)/ 2)) (图片来源:维基百科) 我的连接codeD它: INT灰色(INT N) { N--; 返回否^(N>> 1); } 有人可以解释上述公式工作,或可能的deriviation? 解决方案 如果你看一下二进制计数序列,你注意,相邻codeS在几个最后两位不同(无孔),所以如果 ..
发布时间:2015-11-30 20:20:47 C/C++

在灰色code的邻居

有没有什么算法,我可以用它来查找灰色code邻居? 有关小数目是蛮好写的整个表,但如果我有一些类似的 010 110 是有点多用6个号码写入整个灰色code表。 解决方案 从的维基百科: / * 此功能的目的是转换一个无符号 二进制数来反映二进制格雷code。 操作员GT;>是右移。操作^是异或。 * / 无符号整数binaryTo ..
发布时间:2015-11-30 15:16:01 C/C++