问题标签 [bitwise-xor]

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 回答
3061 浏览

arrays - 查找整数数组的子集是否存在的有效算法,其所有元素的异或是否为给定值?

我有一个正整数数组 - {1,5,8,2,10} 和给定值 7。我需要查找数组的子集是否存在,使得其元素的 XOR 值为 7。在这种情况下子集是 {5,2} 因为 5 xor 2 是 7。一个天真的解决方案是找到所有子集并检查是否存在解决方案。我想要一些比天真的算法更好的算法。注意:-我只需要找到解决方案是否存在。我不需要找到子集。

0 投票
1 回答
813 浏览

ruby - Ruby XOR 位操作密码学练习

我正在尝试将消息转换为 ASCII 十六进制值字符串并再次返回。但是,我的 ^ 位 XOR 运算符遇到了很多麻烦。在过去的 4 个小时里,我一直在搜索 stackoverflow 关于 XOR 和按位操作的类似问题,但我看到的任何建议都没有解决这个问题。

我有一个 RakeTest 文件,以下组成了测试:

我已经手工计算(并使用在线十六进制转换器验证)正确的 ASCII 十六进制结果应该是上面的。这是我的解密模块:

我已经在两个单独的 rake 测试功能中确认to_hex_array并且to_str_from_hex_array工作正常。当我运行上述 rake 测试时,我得到一个'NoMethodError: undefined method '^' for "48":String. 48 是开始的十六进制值,显然字符串不能进行按位操作,但我已经尝试了所有我能找到的方法来转换值,以使 '^' 能够正确运行。

我能得到的最接近(没有抛出错误)是将循环内的操作更改为msg[i].hex ^ key[i].hex,但输出一个 ASCII dec 值。有人可以帮我吗?


编辑:感谢以下建议,我能够成功运行以下测试:

对于那些感兴趣的人,这里是成功的 Decrypt 模块:

0 投票
1 回答
2661 浏览

performance - 为什么在 Firefox 中按位异或 (^) 比不等 (!=) 比较快?

我正在阅读其他网站上的一篇文章(计算机科学 - 可以证明最小可能效率吗?)关于假设最坏情况下的最小 Big-O 时间。

答案之一是解释比较二进制值(或类似值)所需的时间。

我对自己说:为什么不按位运算呢?

我用 Javascript 制作了这个模型代码:

我真的很惊讶!

使用^(bitwise-xor) 的循环可以快 3毫秒

这怎么可能?

为什么按位异或 ( ^) 比不等 ( !=) 比较快?


其他可能相关的信息:

我已经在 Windows 7 Home Premium x64 上运行的 Firefox 34.0.5 上进行了测试。

我还在 Opera 12.17(x64) 和 Chrome 39.0.2171.95 上尝试过这段代码,行为几乎相似,代码使用了^更快的 80% 的测试。


另一个惊喜:

在 php 中,运行这个:

显示完全相同的效果:^!=.
使用$x+=!13^15;而不是在$x+=13^15;70% 的时间内更快。

我已经在http://writecodeonline.com/php/上进行了测试,它在 linux x64 上运行 PHP 5.3。

此代码有来自用户 @AlexK. 的建议,在以下评论中:

13^15 是一个恒定的 noop,也许它只是被优化掉了(尝试一些有效的 x+=13^15;)

0 投票
10 回答
14946 浏览

c++ - 两个整数的异或可以超出界限吗?

我一直在研究在数组中查找孤独整数的算法,这里是实现:

结果是5

我的问题是 - 据说整数(由XOR操作生成)由于此操作而太大:

int这会导致一个潜在的大整数,在这种情况下不能用数据类型表示。我的问题是:

  1. 是否有可能XOR会生成如此大的整数值而无法存储在int类型中?
  2. 如果这不可能发生,那么是否有证据证明这一点?
0 投票
0 回答
732 浏览

encryption - 关于异或和使用多字符加密密钥的加密

我是一个新手,正在学习 x86 程序集,我开始练习使用多字符密钥创建加密,一切都很棒并且工作完美,但我注意到作为一个新手我不知道如何做的行为解释。在我的特定测试中,我有一个纯文本中的随机字符串,然后使用硬编码字符串 2345 对其进行加密,并且我有一个简单的过程,即在纯文本字符串中位置 0 处的 XOR 字符与 2,位置 1 处的字符与 3,以及很快

这是我的问题:在上面的文本中,第二个和第三个字符都被加密为 kk,并且它们与原始对应物“ho”的距离正确地分别为三个和四个。但是第一个k是从h递增转换的,即:h0,i1,j2,k3,第二个k是从o递减转换的,即:o0,n-1,m-2,l-3,k- 4

我想知道这种行为的原因是什么?因为在我的代码中,我认为没有任何暗示这种行为的地方

0 投票
1 回答
8709 浏览

python - TypeError:奇数长度的字符串,同时解码十六进制字符串并使用for循环迭代仅到列表中的一个点

我在解码 HEX 字符串时遇到了一些麻烦,我得到了

我尝试了一些方法来解决它,但似乎没有任何效果。此外,当迭代某些打印而不解码时,for 循环在 g 字母处崩溃。任何线索?

0 投票
1 回答
1022 浏览

java - Java XOR 操作

我遇到了这个问题,其中所有程序都只给出了一条逻辑。以下问题的缺失行可以填写什么?

问题陈述

杰克和丹尼尔是朋友。他们想加密他们的谈话,这样他们就可以避免被侦探机构拦截。所以他们发明了一种新的密码。每条消息都被编码为其长度为N的二进制表示B。然后将其写下K次,移位0,1,...,K-1位。如果B=1001010K=4它看起来像:

然后计算每一列的异或并写下来。这个数字称为S。例如,对上面示例中的数字进行异或运算会导致

然后将编码后的消息SK发送给 Daniel。

Jack 正在使用这种编码算法,并要求 Daniel 实现解码算法。你能帮助丹尼尔实现这个吗?

输入格式

  • 第一行包含两个整数NK
  • 第二行包含长度为N+K-1的字符串S ,由 1 和 0 组成。

输出格式

长度为N的解码消息,由 1 和 0 组成。

约束

  • 1≤N≤10^6,
  • 1≤K≤10^6
  • |S|=N+K−1
  • 保证S是正确的。

样本输入#00

样本输出#00

样本输入#01

样本输出#01

输入#00 的说明

输入#01 的解释


0 投票
1 回答
1326 浏览

bitwise-operators - 求解按位 XOR 和 ADD 方程

自然可以使用两次异或来取回原始值。如果原始值是掩码的一部分怎么办?

编码:

假设:起始值 c[-1] = 0,^ 表示按位异或

在命令式 C 形式中:

如何创建一个从 e => c 反转这个的解码步骤?

鉴于我从您的回答中学到的知识,我已经简化/澄清(阅读:更改)问题!使用与 DanL 类似的步骤,从原始方程开始:

???

现在,查看原始编码 - 第一个字节将始终为零(= c[i] ^ (c[i] + 0))。所以是的,在集合中必须丢失一个字节。

0 投票
6 回答
131 浏览

c++ - ~ 在按位运算中使用时究竟做了什么?

~i和有什么区别 两者INT_MAX^i 都给出相同的不。在二进制中,但是当我们打印编号时。输出不同,如下面的代码所示

我得到的输出为

为什么k和g不同?

0 投票
2 回答
4567 浏览

python - 为什么你不能在 python 中异或字节对象?

我想我了解 python 字节对象,但支持字节字符串的按位运算似乎是一个如此明显的功能。我不明白为什么不支持它。

好的。我从一个字符串变成了类似于我的字符串在 ascii 中的字节表示。

所以当我尝试:

为什么?为什么python不支持这个?关于字节对象,有什么我不理解的东西使这不可行或模棱两可吗?