我正在尝试使用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,x值0和2满足条件:
- 5 + 0 = 5 ^ 0 = 5
- 5 + 2 = 5 ^ 2 = 7
因此,我们打印2作为我们的答案.
样本输入: 10
样本输出: 4
说明: 对于N = 10,该X值0 …
是否有一个历史原因,为什么Xoring任何带有空格字符的字母字母会改变字母的大小写?(即'a'xor''='A','F'xor''='f'等...)
或者这只是巧合?
(假设字符是ASCII或unicode编码的.)
可能重复:
python中十六进制数的按位异或
我试图在Python中XOR两个十六进制字符串,并不知道从哪里开始.
我有两个十六进制字符串:
a = "32510ba9a7b2bba9b8005d43a304b5714cc0bb0c8a34884dd91304b8ad40b62b07df44ba6e9d8a2368e51d04e0e7b207b70b9b8261112bacb6c866a232dfe257527dc29398f5f3251a0d47e503c66e935de81230b59b7afb5f41afa8d661cb"
b = "32510ba9babebbbefd001547a810e67149caee11d945cd7fc81a05e9f85aac650e9052ba6a8cd8257bf14d13e6f0a803b54fde9e77472dbff89d71b57bddef121336cb85ccb8f3315f4b52e301d16e9f52f90"
Run Code Online (Sandbox Code Playgroud)
我应该用这个吗?
return "".join([chr((x) ^ (y)) for (x,y) in zip(a[:len(b)], b)])return "".join([chr(ord(x) ^ ord(y)) for (x, y) in zip(a[:len(b)], b)])我不明白上面两个代码的区别.为什么chr和ord?我也见过人们使用int(hex,16).
我正在尝试交换两个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) 我现在正在参加一个装配课程,那个检查我们家庭作业的人是一个非常迂腐的老派优化狂.例如,如果他看到,他会扣除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)
我真的需要一个好成绩,所以我试图让它尽可能优化.(我需要优化时间和代码大小)
#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=0和0^N=N,不是吗?
我正在寻找一种在命令行上获得两个图像的Bitwise XOR的方法(或者以可以在程序或脚本中实现的另一种方式).
这应该导致与支持它的图片编辑器中使用XOR混合模式相同的最终图片(Paint.NET,Photoshop等)
举个例子,假设我有图像A:

和图像B:

那么结果应该是这样的:

当然,有趣的是,当您再次使用图像B对图像C进行异或时,您将获得图像A的精确副本.
现在,我一直在互联网上查找以编程方式执行此操作的方法,但我一无所获.甚至ImageMagick也不支持对图像进行按位异或.
sombebody知道这样做的方法吗?
如何使用+, - ,*,/等基本数学运算符实现XOR
更新:实际上,我需要跟踪具有布尔值的两个矩阵的变化.这可以使用XORing每个值与其他矩阵中的对应值来完成.但是,Lp_Solve库不支持XOR操作.此外,它只接受线性方程.
我得到了一个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如何找到缺失的整数?
&有&&.|有||.为什么不^有^^?
我知道它不会短路,但会有不同的语义.在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) xor ×10
c ×3
java ×3
algorithm ×2
ascii ×2
c++ ×2
assembly ×1
cryptography ×1
hex ×1
image ×1
imagemagick ×1
java-stream ×1
operators ×1
performance ×1
python ×1
unicode ×1
variables ×1
x86-16 ×1