假设我有3个字节,XY和Z.
X XOR Y导致Z.
我知道X和Z是什么,但我不知道Y是什么,所以我正在编写一个快速的脚本来解决这个问题.
虽然,我不知道我怎么会开始.我手工做了几个,这只是逐个比较每个位的问题,但我怎么能在python中做到这一点?我解决Y的程序似乎不够明确.
因为我只需要实际使用这样的东西,所以写它或者只是使用能为我做这件事的东西就足够了.
给出两个数字的XOR和SUM.如何找到这些数字?例如,x = a + b,y = a ^ b; 如果给出x,y,如何获得a,b?如果不能,给出原因.
我有两个字符串如下:
STRING1 : 011011110011000
STRING2 : 011001000001000
EXPECTED OUTPUT : 000010110010000
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用以下代码对它们进行异或(按位)时,输出为空.码:
for(int i = 0; i<15; i++)
{
final_key[i] = STRING1[i] ^ STRING2[i];
cout<<" XOR = "<<final_key[i];
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我有以下代码:
byte[] S = new byte[256];
byte[] T = new byte[256];
for (int i = 0; i < 256; ++i) {
S[i] = (byte)i;
T[i] = 13;
}
int j = 0;
int i2 = 0;
while (i2 < 256) {
j = j + S[i2] + T[i2] & 255;
byte[] arrby = S;
int n2 = i2;
arrby[n2] = (byte)(arrby[n2] ^ S[j]);
byte[] arrby2 = S;
int n3 = j;
arrby2[n3] = (byte)(arrby2[n3] ^ S[i2]);
byte[] arrby3 = S; …Run Code Online (Sandbox Code Playgroud) 我想对多个操作数进行按位操作,这样当只有一个整数在这个位置有1位时输出的整数为1,否则为0.
我正在使用:(a ^ b ^ c ^ d ^ e ^ f ^ g ^ h ^ i)^(a&b&c&d&e&f&g&h&i)
同
a: 0000001000
b: 0000000010
c: 1010000000
d: 0000110000
e: 0001000000
f: 0000110000
g: 1000100000
h: 0000000100
i: 0100000000
Run Code Online (Sandbox Code Playgroud)
我想得到:
0111001110
Run Code Online (Sandbox Code Playgroud)
但是,我得到:
0111101110
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?或者我应该修改什么?
我试图解决这个问题
“考虑一个非负整数数组。通过对第一个数组的元素进行混洗并删除一个随机元素来形成第二个数组。给定这两个数组,找出第二个数组中缺少哪个元素。”
解决方案之一是使用XOR的以下代码
def find(arr1, arr2):
result=0
# Perform an XOR between the numbers in the arrays
for num in arr1+arr2:
result^=num
print result
return result
arr1 = [1,2,3,4,5,6,7]
arr2 = [3,7,2,1,4,6]
Run Code Online (Sandbox Code Playgroud)
该函数的结果为5。
我知道XOR的基本原理。但是我不明白上面的代码如何找到结果。
给定一个包含 n 个整数的数组,索引从 1->n。任务是执行 Q 次给定的查询,并在每次查询后打印数组的总和。
我们可以执行三种类型的操作:
例子:
输入arr[] = {2, 3, 9, 5, 6, 6}, Q = 5
1 3
3 5
2 2
3 2
2 7
输出: 34 37 31 27 23
说明:
1 3 -> arr[] = {2, 3, 9, 5, 6, 6, 3} -> 总和 = 34
3 5 -> arr[] = {7, 6, …
我在纸上进行了几次测试,但似乎无法在任何地方找到确认.
假设我有几个独特的8位数字,我将它们混合在一起存储在某处.如果我那么,之后,将那些相同的数字与存储的数字一起x,我总是得到0吗?
基本上我有一个条件的枚举,其中一些条件需要在操作发生之前完成.作为一个完整性检查,并确保我不会意外地回来并在以后破坏此代码,我正在考虑将所需的条件一起开始,然后在满足条件时对存储的值进行异常处理.然后就在操作发生之前,确保我们回到0.
所以像
sanity_check = C1 ^ C3 ^ C5
...
//Condition one is met
sanity_check ^= C1
...
//Condition 3 is met
sanity_check ^= C3
...
//Condition 5 is met
sanity_check ^= C5
...
if( sanity_check == 0 )
Do operation
Run Code Online (Sandbox Code Playgroud)
我知道它并不完美,因为在合适的条件下,我可能会在那里找到一个中间0状态.但它更适合我自己用作防范将来意外移动其中一个条件的操作.
我正在使用XNOR加密文件,其密钥未知.我想修改xortool,可以在这里找到:https://github.com/hellman/xortool用于XNOR加密.
显然,只有两行使用'^'运算符.所以我尝试使用〜运算符将它们更改为xnor.但我无法获得所需的输出.我怎么能做到这一点?
编辑:代码仅在xortool.py中的第248行使用"^"运算符
key_possible_bytes[offset] += chr(ord(char) ^ most_char)
Run Code Online (Sandbox Code Playgroud)
并在routine.py的第75行
ret[index] = (chr(ord(char) ^ ord(key[index % len(key)])))
Run Code Online (Sandbox Code Playgroud)
所以我在他们两个之前加了一个〜运算符.
什么是"灰色代码连续"应该是什么意思?我的意思是10和11在十进制系统中是连续的,但什么是"灰色代码中的连续"含义?我只知道格雷码是一个二进制数字系统,其中两个连续值只有一位不同.
这是一个在线解决方案,但我无法理解这一点
private static int graycode(byte term1, byte term2) {
byte x = (byte)(term1^term2); // why use XOR?
int count = 0;
while(x!=0)
{
x = (byte)(x &(x-1)); // why use bitwise operator?
count++; // what is count?
}
return count == 1;
}
Run Code Online (Sandbox Code Playgroud)
我试着理解花了一个小时,但我仍然没有线索.