标签: xor

试图找到满足n + x = n ^ x的x的数量会因超时而失败

我正在尝试使用Java 8的新功能(例如s)从Hacker Rank站点的Bit Manipulation部分解决以下问题.Stream

问题描述:

给定一个整数n,找到每个x,使得:

  • 0 <= x <= n
  • n + x = n ^ x

其中^表示按位XOR运算符.然后打印一个整数,表示满足上述条件的x的总数.

约束

  • 0 <= n <= 10 15

样本输入: 5

样本输出: 2

说明:

对于n = 5,x02满足条件:

  • 5 + 0 = 5 ^ 0 = 5
  • 5 + 2 = 5 ^ 2 = 7

因此,我们打印2作为我们的答案.

样本输入: 10

样本输出: 4

说明: 对于N = 10,该X0 …

java algorithm bit-manipulation xor java-stream

22
推荐指数
1
解决办法
846
查看次数

Xoring与空间字符的字母表信件

是否有一个历史原因,为什么Xoring任何带有空格字符的字母字母会改变字母的大小写?(即'a'xor''='A','F'xor''='f'等...)

或者这只是巧合?

(假设字符是ASCII或unicode编码的.)

unicode ascii xor

20
推荐指数
2
解决办法
5866
查看次数

Python:XOR十六进制字符串

可能重复:
python中十六进制数的按位异或

我试图在Python中XOR两个十六进制字符串,并不知道从哪里开始.

我有两个十六进制字符串:

a = "32510ba9a7b2bba9b8005d43a304b5714cc0bb0c8a34884dd91304b8ad40b62b07df44ba6e9d8a2368e51d04e0e7b207b70b9b8261112bacb6c866a232dfe257527dc29398f5f3251a0d47e503c66e935de81230b59b7afb5f41afa8d661cb"
b = "32510ba9babebbbefd001547a810e67149caee11d945cd7fc81a05e9f85aac650e9052ba6a8cd8257bf14d13e6f0a803b54fde9e77472dbff89d71b57bddef121336cb85ccb8f3315f4b52e301d16e9f52f90"
Run Code Online (Sandbox Code Playgroud)

我应该用这个吗?

  1. return "".join([chr((x) ^ (y)) for (x,y) in zip(a[:len(b)], b)])
  2. return "".join([chr(ord(x) ^ ord(y)) for (x, y) in zip(a[:len(b)], b)])

我不明白上面两个代码的区别.为什么chrord?我也见过人们使用int(hex,16).

python hex ascii cryptography xor

20
推荐指数
2
解决办法
5万
查看次数

一行上的多个分配未按预期工作

我正在尝试交换两个ints - x并且y在示例中,并且在没有库函数的情况下在一行中执行.

所以我从这开始:

int x = 4;
int y = 3;

System.out.println(x);
System.out.println(y);

x ^= y;

System.out.println(x);
System.out.println(y);

y ^= x;

System.out.println(x);
System.out.println(y);

x ^= y;

System.out.println(x);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

输出4, 3, 7, 3, 7, 4, 3, 4与预期一致.到目前为止都很好.

接下来是这样的:

int x = 4;
int y = 3;

System.out.println(x);
System.out.println(y);

y ^= (x ^= y);

System.out.println(x);
System.out.println(y);

x ^= y;

System.out.println(x);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

产量4, 3, 7, 4, 3, 4再次如预期.到目前为止仍然很好.

最后这个:

int x = 4; …
Run Code Online (Sandbox Code Playgroud)

java variables xor variable-assignment bitwise-operators

20
推荐指数
2
解决办法
1470
查看次数

设置寄存器为1或(-1)的最有效方法

我现在正在参加一个装配课程,那个检查我们家庭作业的人是一个非常迂腐的老派优化狂.例如,如果他看到,他会扣除10%:

mov ax, 0
Run Code Online (Sandbox Code Playgroud)

代替:

xor ax,ax
Run Code Online (Sandbox Code Playgroud)

即使它只使用一次.

我不是一个完整的汇编程序初学者,但我不是一个优化专家,所以我需要你的帮助(可能是一个非常愚蠢的问题,但无论如何我都会问):如果我需要将寄存器值设置为1或(-1)最好使用:

mov ax, 1
Run Code Online (Sandbox Code Playgroud)

或做类似的事情:

xor ax,ax
inc ax
Run Code Online (Sandbox Code Playgroud)

我真的需要一个好成绩,所以我试图让它尽可能优化.(我需要优化时间和代码大小)

performance assembly xor cpu-registers x86-16

19
推荐指数
1
解决办法
1万
查看次数

XORing"Hello World!" 切断字符串

#include <stdio.h>
#include <string.h>

int main()
{
    char greeting[]="\nHello World!\n";
    int a;

    for(int i=0; i<strlen(greeting); i++)
        greeting[i]^=111;

    for(int i=0; i<strlen(greeting); i++)
        greeting[i]^=111;

    printf("%s\n",greeting);    
    scanf("%d",&a);

}
Run Code Online (Sandbox Code Playgroud)

输出:

Hell
Run Code Online (Sandbox Code Playgroud)

为什么在找到对应于XOR键编号的字母后切掉所有内容(在这种情况下,ASCII为'w')?在数理逻辑,N^N=00^N=N,不是吗?

c c++ xor

19
推荐指数
2
解决办法
1257
查看次数

寻找一种在图像上进行按位异或的方法

我正在寻找一种在命令行上获得两个图像的Bitwise XOR的方法(或者以可以在程序或脚本中实现的另一种方式).

这应该导致与支持它的图片编辑器中使用XOR混合模式相同的最终图片(Paint.NET,Photoshop等)

举个例子,假设我有图像A:

图片A(西雅图,来自paint.net文档

图像B:

ImageB(Apple,来自paint.net文档)

那么结果应该是这样的:

图像C(以上图像的Xor结果,来自paint.net文档)

当然,有趣的是,当您再次使用图像B对图像C进行异或时,您将获得图像A的精确副本.

现在,我一直在互联网上查找以编程方式执行此操作的方法,但我一无所获.甚至ImageMagick也不支持对图像进行按位异或.

sombebody知道这样做的方法吗?

image imagemagick image-processing xor

18
推荐指数
3
解决办法
2万
查看次数

XOR使用数学运算符

如何使用+, - ,*,/等基本数学运算符实现XOR

更新:实际上,我需要跟踪具有布尔值的两个矩阵的变化.这可以使用XORing每个值与其他矩阵中的对应值来完成.但是,Lp_Solve库不支持XOR操作.此外,它只接受线性方程.

c java xor

17
推荐指数
6
解决办法
5648
查看次数

找到序列中缺少的数字

我得到了一个n个整数的列表,这些整数在1到n的范围内.列表中没有重复项.但是列表中缺少其中一个整数.我必须找到缺少的整数.

Example: If n=8
I/P    [7,2,6,5,3,1,8]
O/P    4

I am using a simple concept to find the missing number which is to get the 
sum of numbers 
       total = n*(n+1)/2
And then Subtract all the numbers from sum.
Run Code Online (Sandbox Code Playgroud)

但是如果数字的总和超出允许的最大整数,则上述方法将失败.

所以我搜索了第二个解决方案,我找到了一个方法如下:

 1) XOR all the elements present in arr[], let the result of XOR be R1.
 2) XOR all numbers from 1 to n, let XOR be R2.
 3) XOR of R1 and R2 gives the missing number.
Run Code Online (Sandbox Code Playgroud)

这个方法是如何工作的?在上述情况下,R1和R2的XOR如何找到缺失的整数?

algorithm xor

17
推荐指数
1
解决办法
7808
查看次数

为什么C/C++中没有^^运算符?

&&&.|||.为什么不^^^

我知道它不会短路,但会有不同的语义.在C中,true实际上是任何非零值.按位XOR并不总是与逻辑XOR相同:

int a=strcmp(str1,str2);// evaluates to 1, which is "true"
int b=strcmp(str1,str3);// evaluates to 2, which is also "true"
int c=a ^^ b; // this would be false, since true ^ true = false
int d=a ^ b; //oops, this is true again, it is 3 (^ is bitwise)
Run Code Online (Sandbox Code Playgroud)

因为你不能总是依赖于一个真正的价值是1-1,就不是一个^^运营商有很大的帮助?我经常要做这样的奇怪事情:

if(!!a ^ !!b) // looks strange
Run Code Online (Sandbox Code Playgroud)

c c++ language-design operators xor

16
推荐指数
4
解决办法
1558
查看次数