标签: bitwise-xor

简化(a + b)异或(c + b)

是否有可能简化(a + b)xor(c + b)b对最终结果的贡献是什么?请注意,我将布尔代数与算术混合,xor是按位异或对应的位,+是8位的标准加法,在溢出时包围.a,b,c是unsigned char;

c++ bitwise-xor

6
推荐指数
1
解决办法
4456
查看次数

使用Prolog CLPFD为32位数字实现XOR功能

我尝试在Prolog CLPFD中实现高效的异或(XOR).这应该是简单的谓词,如:

xor(A, B, AxorB).
Run Code Online (Sandbox Code Playgroud)

A,B,AxorB是自然数(用0表示)和AxorB是的结果A 的XOR B.

我的主要问题是效率.首先,我无法找到任何方法来对两个数字进行异或,而不将这些数字分成可以进一步处理/约束的单独部分,并且打破这些数字的过程(创建适当的约束然后解析它们)正在进行一些处理时间.其次,我不能提出任何有效的方法来"模拟"自然数字上的XOR函数,而不是在下面的第二个代码中给出.

让我们从我的第一个代码开始.这是最简单的XOR实现,它仅适用于1位值(0和1):

xor_1bit_values(A, B, AxorB) :-
    AxorB #= (A + B) mod 2.
Run Code Online (Sandbox Code Playgroud)

要将其用于大于1的数字,必须将数字分成位:

xor_number(A, B, Result, Bits) :-
    Count is Bits - 1,
    xor_number(A, B, Result, Count, 0).
xor_number(A, B, Result, 0, Sum) :-
    xor_1bit_values(A, B, Xor),
    Result #= Xor + Sum.
xor_number(A, B, Result, Count, Sum) :-
    P is 2^Count,
    X #= A / P,
    Y #= B / P,
    xor_1bit_values(X, …
Run Code Online (Sandbox Code Playgroud)

prolog swi-prolog bitwise-xor clpfd

6
推荐指数
1
解决办法
424
查看次数

查找是否存在整数数组子集的高效算法,其所有元素的xor是否为给定值?

我有一个正整数数组 - {1,5,8,2,10}和给定值7.我需要查找数组的子集是否存在,使其元素的XOR值为7.在这种情况下子集是{5,2},因为5 xor 2是7.一个天真的解决方案是找到所有子集并检查是否存在解决方案.我想要一些比天真更好的算法.注意: - 我只需要找出是否存在解决方案.我不需要找到子集.

arrays algorithm subset-sum bitwise-xor

6
推荐指数
1
解决办法
2178
查看次数

给定两个整数,找到第三个整数,它与给定的两个不同,不使用if语句

上面提到的问题如下:给定两个整数x1和x2,找到另一个整数x3,它不同于x1和x2,而不使用if关键字.

我的解决方案基于对整数的逐位运算以及两个位之间的XOR将返回1的事实,当且仅当两个位不相等时.

这个解决方案有效吗?你能找到更好的解决方案吗?当然,运行时考虑和内存消耗应该尽可能好.

注意:三元运算和比较(即 - !=,==)也是不允许的

提前致谢,

盖伊.

我的解决方案

int foo(int x1,int x2)
{
    // xor
    int x3 = x1 ^ x2;

    // another xor 
    x3 = x3 ^ x2;

    // not
    x3 = ~x3;

    return x3;  

}
Run Code Online (Sandbox Code Playgroud)

c algorithm bit-manipulation xor bitwise-xor

5
推荐指数
1
解决办法
1035
查看次数

PHP中的异或两个字符?

我在 php 阅读 xor ,我看到了这个例子:

$aa = "A" ^ "}"; 
echo $aa; // <
Run Code Online (Sandbox Code Playgroud)

所以我在互联网上搜索它是如何工作的,他们说它的总和是 ascii 代码,但上面的代码不是总和。

A = 65
} = 125 

65 + 125 = 190
Run Code Online (Sandbox Code Playgroud)

我试图在另一个字符之间求和

$aa = "A" ^ "&";
echo $aa;
Run Code Online (Sandbox Code Playgroud)

但结果是 130 = g

那么超过 97 的任何字符都不是总和吗?

我也检查了这个问题 PHP XOR 字符串,但它没有帮助我。

php bitwise-operators bitwise-xor

5
推荐指数
1
解决办法
615
查看次数

按位操作-检查和删除

请注意下面的简单示例:

Module Module1
    <Flags>
    Public Enum Names
        None    = 0
        Test    = 1
        Test2   = 2
        Test3   = 4
        Test4   = 8
    End Enum

    Sub Main()
        Dim test As Names = Names.Test Or Names.Test3
        If (test And Names.Test3) = Names.Test3
            Console.WriteLine("TRUE")
        Else
            Console.WriteLine("FALSE")
        End If
    End Sub
End Module
Run Code Online (Sandbox Code Playgroud)

我的问题的第一部分与这条线有关If (test And Names.Test3) = Names.Test3

仅仅检查If test And Names.Test3该标志是否存在会更好吗?如果它的计算结果为非零值(意味着该标志存在),那么条件的结果仍然是True

是否有充分的理由使用第一种方法进行第二种检查?(虽然我的回答是针对VB.NET,但我也想知道这是否是其他地方(例如C#,C ++等)的潜在陷阱)。

此外,关于标记删除,似乎有两种方法可以执行此操作:

test = test Xor Names.Test3test = test And Not Names.Test3 …

vb.net bitwise-operators bitwise-and bitwise-xor

4
推荐指数
1
解决办法
1336
查看次数

顺序XOR运算中的优先顺序

我有以下表达式来计算奇偶校验位:

AB0E XOR 73C9 XOR D46A XOR 06E3

如何评估?是吗:

(((AB0E XOR 73C9)XOR D46A)XOR 06E3)

或者是:

(AB0E XOR(73C9 XOR(D46A XOR 06E3)))

bit-manipulation bitwise-operators bitwise-xor

3
推荐指数
1
解决办法
4350
查看次数

有多少组 4 个数字使得它们的异或等于 0?

我有两个非负整数 x 和 y,它们都最多有 30 位(所以它们的值约为 10^9)。

我想计算有多少组 4 个数字 {a_1, a_2, a_3, a_4} 使得 a_1 + a_2 = x 和 a_3 + a_4 = y 并且所有这 4 个数字的异或等于 0。

解决这个问题最快的算法是什么?

我能想到的最快的方法是将异或方程重新排列为a_1 xor a_2 = a_3 xor a_4。

然后我可以在 O(x) 中计算左侧的所有值,在 O(y) 中计算右侧的所有值,因此整个算法在 O(x + y) 中运行。

algorithm dynamic-programming xor combinatorics bitwise-xor

3
推荐指数
1
解决办法
383
查看次数

java中的'^='运算符是什么

我的代码如下:

char ch = t.charAt(t.length() - 1);
        // result of XOR of two char is Integer.
        for(int i = 0; i < s.length(); i++){
            ch = ch^s.charAt(i);
            ch = ch^t.charAt(i);
        }

        return ch;
Run Code Online (Sandbox Code Playgroud)

它抛出错误

第 6 行:错误:类型不兼容:从 int 到 char 的可能有损转换 ch = ch^s.charAt(i);

第 7 行:错误:类型不兼容:从 int 到 char 的可能有损转换 ch = ch^t.charAt(i);

2 错误

然而,当我改变

ch = ch^s.charAt(i);
ch = ch^t.charAt(i);
Run Code Online (Sandbox Code Playgroud)

ch ^= s.charAt(i);
ch ^= t.charAt(i);
Run Code Online (Sandbox Code Playgroud)

然后,我的代码就可以工作了。

'^=' 和 '* = ^ ' 不同吗??为什么我搜索这个关于'^='的问题,它说它们是一样的??

什么是“^=”运算符?

java bitwise-xor

3
推荐指数
1
解决办法
95
查看次数

不同质数的异或可以是 0 吗?

我已经尝试了几个集合的这个练习,例如 {2, 3, 5}, {5, 11} 其中元素的异或不为 0。我的直觉表明它总是非零,但我无法证明它。我在网上搜索,但没有找到任何东西。任何帮助将不胜感激。

math primes xor bitwise-xor

3
推荐指数
1
解决办法
282
查看次数