标签: xor

为什么这个语句不适用于java x ^ = y ^ = x ^ = y;

int x=1;
int y=2;
x ^= y ^= x ^= y;
Run Code Online (Sandbox Code Playgroud)

我期待值被交换.但它给出x = 0和y = 1.当我尝试使用C语言时,它会给出正确的结果.

java swap xor undefined-behavior

14
推荐指数
2
解决办法
2851
查看次数

在数组中查找N个元素xor等于P.

我正在研究一个问题,我期望N<20在XOR等于的数组中找到元素组合的数量P.

例如:我们的数组是{2 4 5 2 7}

1)如果N = 2且P = 6,

答案是2(因为我们只能选择(2 xor 4)= 6和(4 xor 2)= 6)

{ 2 4 5 2 7}或{2 4 5 2 7}

2)如果N = 3且P = 6

答案是1((4 x或5 x或7)= 6)

数组的大小可能非常大(大约10 ^ 6)所以我正在寻找快速算法来解决这个问题.

arrays algorithm xor combinatorics

13
推荐指数
1
解决办法
761
查看次数

如何在ZX Spectrum basic中模仿逻辑XOR?

有时在ZX Spectrum Basic中进行编码时,我需要评估由两个操作数和逻辑xor形成的逻辑表达式,如下所示:

IF (left operand) xor (right operand) THEN
Run Code Online (Sandbox Code Playgroud)

由于ZX Basic只知道NOT,OR和AND我不得不求助于某种奇特的计算,其中包括左/右操作数的多种用法.这很尴尬,因为它消耗时间和内存,如果你在8位机器上工作,这两者都很稀疏.我想知道是否有一个模仿xor运算符的巧妙技巧.

为了测试结果,我提供了一个小代码示例:

 5 DEF FN x(a,b)=(a ??? b) : REM the xor formula, change here
10 FOR a=-1 TO 1 : REM left operand
20 FOR b=-1 TO 1 : REM right operand
30 LET r=FN x(a,b) : REM compute xor
40 PRINT "a:";a;" b:";b;" => ";r
50 NEXT b
60 NEXT a
Run Code Online (Sandbox Code Playgroud)

你能帮我找一个高性能的解决方案吗?到目前为止,我尝试过,DEF FN x(a,b)=(a AND NOT b) OR (b AND NOT a)但它有点笨拙.

编辑:

如果你想测试你的想法,我建议使用BasinC …

basic zxspectrum xor retro-computing

13
推荐指数
3
解决办法
411
查看次数

如何使用+ - */实现XOR?

如何仅使用基本算术运算来实现XOR运算(在两个32位整数上)?按顺序除以2的每个幂后,是否必须按位进行,或者是否有快捷方式?关于最简单,最短的代码,我并不关心执行速度.

编辑: 这不是家庭作业,而是hacker.org上的谜语.重点是在基于堆栈的虚拟机上实现XOR,操作非常有限(类似于brainfuck语言,是 - 没有shift或mod).使用该VM是困难的部分,尽管通过简短的算法当然更容易.

虽然FryGuy的解决方案很聪明,但我必须采用我原来的理想(类似于litb的解决方案),因为在这种环境中难以使用比较.

language-agnostic bit-manipulation xor

12
推荐指数
3
解决办法
5628
查看次数

将两个整数作为一个整数传递

我有两个整数,我需要通过一个整数,然后得到两个整数的值.

我正在考虑使用逻辑运算符(AND,OR,XOR等).

logic xor

12
推荐指数
3
解决办法
8051
查看次数

在Java XOR中,三个真实输入返回true.为什么?

以下代码

System.out.println("1 0 0: " + (true ^ false ^ false));
System.out.println("1 0 1: " + (true ^ false ^ true));
System.out.println("1 1 0: " + (true ^ true ^ false));
System.out.println("1 1 1: " + (true ^ true ^ true));
System.out.println("0 0 0: " + (false ^ false ^ false));
System.out.println("0 0 1: " + (false ^ false ^ true));
System.out.println("0 1 0: " + (false ^ true ^ false));
System.out.println("0 1 1: " + (false ^ true ^ …
Run Code Online (Sandbox Code Playgroud)

java logic xor

12
推荐指数
4
解决办法
6947
查看次数

如何在C中进行逐位XOR

我正在尝试进入C编程,而我在编写只有~&运算符的按位XOR函数时遇到了麻烦.示例:bitXor(4, 5) = 1.我怎样才能做到这一点?

到目前为止我有这个:

int bitXor(int x, int y) {

    return z;
}
Run Code Online (Sandbox Code Playgroud)

c xor bit

12
推荐指数
3
解决办法
7万
查看次数

将某些整数的xor设为零所需的最小总和

这是一个处理算法和按位xor运算的问题.我们给出了x1*x2*x3*....*xn=P,其中star(*)操作表示XOR(按位)操作, x1到xn是正整数.P也是正整数.我们需要找到min(a1 + a2 + a3 + ..... an) 这样的关系成立 - > (x1+a1)*(x2+a2)*(x3+a3)*....*(xn+an)=0.'+'表示正常的加法操作.

algorithm xor

12
推荐指数
1
解决办法
2064
查看次数

.Net 4.6打破了XOR密码模式?

在.NET 4.5中,这种密码在32位和64位架构上运行良好.将项目切换到.NET 4.6会在64位中完全破解此密码,而在32位中,这个问题会出现奇怪的补丁.

在我的方法"DecodeSkill"中,SkillLevel是在.NET 4.6上打破的唯一部分. 这里使用的变量从网络流中读取并进行编码.

DecodeSkill(始终为SkillLevel返回正确的解码值)

    private void DecodeSkill()
    {
        SkillId = (ushort) (ExchangeShortBits((SkillId ^ ObjectId ^ 0x915d), 13) + 0x14be);
        SkillLevel = ((ushort) ((byte)SkillLevel ^ 0x21));
        TargetObjectId = (ExchangeLongBits(TargetObjectId, 13) ^ ObjectId ^ 0x5f2d2463) + 0x8b90b51a;
        PositionX = (ushort) (ExchangeShortBits((PositionX ^ ObjectId ^ 0x2ed6), 15) + 0xdd12);
        PositionY = (ushort) (ExchangeShortBits((PositionY ^ ObjectId ^ 0xb99b), 11) + 0x76de);
    }
Run Code Online (Sandbox Code Playgroud)

ExchangeShortBits

    private static uint ExchangeShortBits(uint data, int bits)
    {
        data &= 0xffff;
        return (data …
Run Code Online (Sandbox Code Playgroud)

c# bit-shift xor .net-4.5 .net-4.6

12
推荐指数
1
解决办法
471
查看次数

带XOR的TypeScript接口,{bar:string} xor {can:number}

我怎么说我想要一个接口是一个或另一个,但不是两者兼有?

interface IFoo {
    bar: string /*^XOR^*/ can: number;
}
Run Code Online (Sandbox Code Playgroud)

schema interface xor typescript typescript2.0

12
推荐指数
3
解决办法
1623
查看次数