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

cryptography - 如何理解密码学中的字符串连接 (||) 和按位异或 ( (+) )

这是一个证明它F是分组密码的问题。

我想证明 的逆F,但是我不明白 和 这两个操作||(+)所以我不知道如何简化它。

AES^(-1) (K1,x1(+)x2)一样x1
AES(K2,X2(+)K1)_x2

你能帮我吗?

0 投票
2 回答
2140 浏览

algorithm - 最近谷歌关于按位运算的面试难题

这是谷歌最近的一个面试问题:

我们将 f(X, Y) 定义为 X 和 Y 的二进制表示中不同对应位的数量。例如,f(2, 7) = 2,因为 2 和 7 的二进制表示分别为 010 和 111。第一位和第三位不同,所以 f(2, 7) = 2。

给定一个由 N 个正整数组成的数组,A1, A2 ,..., AN。求所有对 (i, j) 的 f(Ai, Aj) 之和,使得 1 ≤ i, j ≤ N

例如:

A=[1, 3, 5]

我们返回

f(1, 1) + f(1, 3) + f(1, 5) + f(3, 1) + f(3, 3) + f(3, 5) + f(5, 1) + f (5, 3) + f(5, 5) =

0 + 1 + 1 + 1 + 0 + 2 + 1 + 2 + 0 = 8

我可以想到这个解决方案是 O(n^2)

我能想到的另一种方法是(考虑到每个元素只包含一个二进制数字):

  • 从数组末尾开始
  • 记录到目前为止发现的 1 和 0
  • 如果当前元素为 1,那么它将对count_of_zeros最终总和有所贡献
  • 像这样继续直到我们到达数组的开头。

这种方法是否正确。

0 投票
2 回答
17009 浏览

excel - 如何使用 Excel 以十六进制格式计算按位异或?

我有两个带有一串位的单元格:

1747F6001E00DB2XXXXX28FE5257645C

1C6262C8DBF510F655XXXXXA3BDA58AC

我想将两者异或,这样结果就会像 0B2594C8C5F5CXXXXX190014698D3CF0.

我知道我需要在 Excel 中使用按位 XOR 运算,因为按位 XOR 计算器可以在线工作,但它们让我可以在十六进制和二进制输入数据之间进行选择。BITXOR 应该可以工作,但它不适用于十六进制输入。

0 投票
1 回答
252 浏览

c++ - 查找 XOR 最大的两个元素

我面临一个问题,需要我从给定的整数数组中找到一个元素,该数组的 XOR 与给定的数字是最大的。

例子 :

A[] = {2,7,3,6}; 数字 = 4。

现在,2^4 = 6、7^4 = 3、3^4 = 7、6^3 = 2。因此,3 应该是答案,因为 3^7 是最大值。

我正在尝试遵循类似 trie 的结构并继续逐位查找可能的最大结果,即从 MSB 开始,如果我的位为 1,则我向下遍历 0 侧,如果我的位为 0,则我遍历在节点的 1 侧。我想出了以下代码。

但是我不断遇到分段错误并且无法运行该程序。我已经尝试了所有技巧来调试代码,但我无法找出问题所在。请帮助找出运行时错误的原因。

谢谢

0 投票
2 回答
441 浏览

java - 使用二进制文字的按位异或的行为

我很想知道使用二进制文字进行按位比较时实际发生了什么。我刚刚遇到以下事情:

所以一切都按预期运行,xor比较等于0。但是,当尝试使用负数时,它将不起作用:

我本来希望最后一个xor比较也等于0. 但是,只有当我将二进制文字显式转换为byte

对我来说,在比较之前看起来像xor两者b1并且0b11111111具有相同的位表示,所以即使它们被强制转换为int(或其他东西),xor应该仍然相等0。您如何得出二进制表示-256的结果?11111111 11111111 11111111 00000000为什么我必须进行显式强制转换byte才能获得0

0 投票
2 回答
707 浏览

algorithm - 对于给定的 n,如何从 1..n 中取数字的异或?(例如 1^2^3^...^n)?

这是我遇到的一个面试问题,我知道如何通过反复异或数字来获得蛮力解决方案,但我不知道如何更有效地做到这一点。

我在careercup上看到了这个解决方案:

但是即使有那个家伙的解释,我也不完全理解这里的逻辑,有人可以解释一下如何做到这一点吗?

0 投票
4 回答
144 浏览

java - Java:如何在按位异或运算符中评估条件?(^)

我试图评估以下内容:

  1. System.out.println(""+(3!=3 | 2==2 | 3==1));- 返回 TRUE
  2. System.out.println(""+(3!=3 & 2==2 & 3==1));- 返回错误
  3. System.out.println(""+(3!=3 ^ 2==2 ^ 3==1));- 返回 TRUE - 如何以及为什么?

我的理解:

  1. 将返回 TRUE;基于第二次比较 ( 2==2);但它会做所有的比较;不像||只做 1 次比较并返回结果

  2. 将返回假;即使它在第一次比较(3!=3)期间得到结果;但它会做所有的比较。不像&&只做1个比较并返回结果

  3. ? 它如何评估陈述?
0 投票
1 回答
249 浏览

c++ - 按位异或以 SIGSEGV 结尾

我有一个函数可以执行简单的按位异或加密。它看起来像这样:

应用程序的输出是:

然后它就死了。我附上gdb它,发现引发了 SIGSEGV-Exception。

我真的不确定为什么会发生这种情况,对我来说一切似乎都很好。

编辑:更多代码:

循环在第一次运行时直接失败,即ij为 0。

0 投票
4 回答
4460 浏览

java - 如果给定两个十六进制数,求它们在格雷码中是否可以连续

“连续格雷码”应该是什么意思?我的意思是 10 和 11 在十进制系统中是连续的,但“格雷码连续”是什么意思?我只知道格雷码是一个二进制数字系统,其中两个连续的值只有一位不同。

这是在线解决方案,但我无法理解

我试图理解花费一个小时,但我仍然不知道。

0 投票
2 回答
549 浏览

java - 如何正确执行异或运算?

我有一个二进制字符串,我想对该字符串的几个位执行异或运算。我的字符串是:

011001100011100000000011

我正在尝试使用下一行代码执行计算:

我得到的最终奇偶校验结果是:100000。正确的结果应该是:001001。

D29 和 D30 是从之前的计算中进行的奇偶校验位,都是整数。

我做错了什么,我该如何解决?我可能应该将其作为按位运算进行,但我似乎无法弄清楚。任何帮助,将不胜感激。