问题标签 [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.
arrays - 查找整数数组的子集是否存在的有效算法,其所有元素的异或是否为给定值?
我有一个正整数数组 - {1,5,8,2,10} 和给定值 7。我需要查找数组的子集是否存在,使得其元素的 XOR 值为 7。在这种情况下子集是 {5,2} 因为 5 xor 2 是 7。一个天真的解决方案是找到所有子集并检查是否存在解决方案。我想要一些比天真的算法更好的算法。注意:-我只需要找到解决方案是否存在。我不需要找到子集。
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 模块:
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;)
c++ - 两个整数的异或可以超出界限吗?
我一直在研究在数组中查找孤独整数的算法,这里是实现:
结果是5
。
我的问题是 - 据说整数(由XOR
操作生成)由于此操作而太大:
int
这会导致一个潜在的大整数,在这种情况下不能用数据类型表示。我的问题是:
- 是否有可能
XOR
会生成如此大的整数值而无法存储在int
类型中? - 如果这不可能发生,那么是否有证据证明这一点?
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
我想知道这种行为的原因是什么?因为在我的代码中,我认为没有任何暗示这种行为的地方
python - TypeError:奇数长度的字符串,同时解码十六进制字符串并使用for循环迭代仅到列表中的一个点
我在解码 HEX 字符串时遇到了一些麻烦,我得到了
我尝试了一些方法来解决它,但似乎没有任何效果。此外,当迭代某些打印而不解码时,for 循环在 g 字母处崩溃。任何线索?
java - Java XOR 操作
我遇到了这个问题,其中所有程序都只给出了一条逻辑。以下问题的缺失行可以填写什么?
问题陈述
杰克和丹尼尔是朋友。他们想加密他们的谈话,这样他们就可以避免被侦探机构拦截。所以他们发明了一种新的密码。每条消息都被编码为其长度为N的二进制表示B。然后将其写下K次,移位0,1,...,K-1位。如果B=1001010和K=4它看起来像:
然后计算每一列的异或并写下来。这个数字称为S。例如,对上面示例中的数字进行异或运算会导致
然后将编码后的消息S和K发送给 Daniel。
Jack 正在使用这种编码算法,并要求 Daniel 实现解码算法。你能帮助丹尼尔实现这个吗?
输入格式
- 第一行包含两个整数N和K。
- 第二行包含长度为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 的解释
bitwise-operators - 求解按位 XOR 和 ADD 方程
自然可以使用两次异或来取回原始值。如果原始值是掩码的一部分怎么办?
编码:
假设:起始值 c[-1] = 0,^ 表示按位异或
在命令式 C 形式中:
如何创建一个从 e => c 反转这个的解码步骤?
鉴于我从您的回答中学到的知识,我已经简化/澄清(阅读:更改)问题!使用与 DanL 类似的步骤,从原始方程开始:
???
现在,查看原始编码 - 第一个字节将始终为零(= c[i] ^ (c[i] + 0))。所以是的,在集合中必须丢失一个字节。
c++ - ~ 在按位运算中使用时究竟做了什么?
~i
和有什么区别 两者INT_MAX^i
都给出相同的不。在二进制中,但是当我们打印编号时。输出不同,如下面的代码所示
我得到的输出为
为什么k和g不同?
python - 为什么你不能在 python 中异或字节对象?
我想我了解 python 字节对象,但支持字节字符串的按位运算似乎是一个如此明显的功能。我不明白为什么不支持它。
好的。我从一个字符串变成了类似于我的字符串在 ascii 中的字节表示。
所以当我尝试:
为什么?为什么python不支持这个?关于字节对象,有什么我不理解的东西使这不可行或模棱两可吗?