异或运算
异或运算定义:异或运算方法是一个二进制逻辑运算,设其运算符合为^,a,b为二进制数,则a,b的异或为a^b。
其运算满足如下:1^1=0,0^0=0,1^0=1,0^1=1,即 相同的为0,不相同为1。
a、b按低位到高位进行1位的二进制运算(高位没有则补0)即得a^b的值。
public class Xor { public static void main(String[] args) { System.out.println(Integer.toBinaryString(34)); System.out.println(Integer.toBinaryString(23)); System.out.println(Integer.toBinaryString(34^23)); } }
输出:
100010 10111 110101
异或运算的一些基本性质:
1、交换律:a^b=b^a (根据定义显然可得)
2、结合律:a^b^c=a^(b^c) (根据定义显然可得)
3、对于任何数a,都有a^a=0,a^0=a(根据定义显然可得)
3、自反性: a^b^b=a (a^b^b=a^(b^b)=a^0=a)
尼姆博奕(Nim Game):有三堆各若干个物品(显然每堆的物品数大于0),两人轮流从某一堆取任意多的物品,每次最少取一个,不设上限,最后取光者获胜。
(一般谈论这个博弈时,都会先谈到 巴什博奕、威佐夫博弈)
设(a,b,c)为三堆石子的个数(a>=0;b>=0;c>=0),先手为 甲;后手为乙。
必败局势,一般称为奇异局势,显然(0,0,0)是一个奇异局势(因为谁面对这种局势,都无法做到游戏给出的条件:每次最少取一个)
讨论局势是必败还是必胜,都是相对于首先面对此局势者来说。因此站在甲的角度来讨论。甲面对(0,0,0)必输。
当甲面对(a,a,0),甲每次拿x,乙随后也跟着拿x,因此甲面对的局势始终是(a-x,a-x,0)。因此转化为甲最终都会面对(0,0,0),因此甲必输。
因为游戏是两个人交替进行。由此可得,如果局势(a,b,c)是必胜局势,那么甲就有策略,使得拿走某堆中的x个物品后,一般地设为(a-x,b,c)=(a',b,c)。此时
(a',b,c)就是一个必败的局面。反之,必败的局面可以变为必胜的局面。由此,我们寻找一个函数F,当
F(a,b,c)=1时,称(a,b,c)为必胜局面,F(a,b,c)=0时,称(a,b,c)为必败局面(奇异局势)。
更一般地,考虑N>=2堆物品的情况。每堆数量为(a1,a2,...,aN) (1,2,..,N一般在数学中用下标表示)
定理:(a1,a2,...,aN)为奇异局势当且仅当a1^a2^...^aN=0
证明:(a1,a2,...,aN)=(0,0,...,0)时显然成立。
当(a1,a2,...,aN)不为(0,0,...,0)时,若a1^a2^...^aN=k<>0,显然k的最高位为1。
则一定存在一个ai(1<=i<=N),它在k的最高位的值为1。(若a1,a2,...,aN在k的最高位处都为0,那么异或运算规则,不可能得到k的最高位为1)
因此,ai^k<ai(因为最高位变为0了)
设ai'=ai^k,则a1^a2^...^ai'^...^aN=a1^a2^...^ai^...^aN^k (代入ai'=ai^k,并由异或的交换律得到)
=k^k=0
因此当a1^a2^...ai^...^aN=k<>0时,存在移动ai->ai' (即移动ai-ai'>0)使得a1^a2^...ai^...^aN=0
若a1^a2^...ai^...^aN=0,则不存在合法移动,使得a1^a2^...ai‘^...^aN=0。
因为若a1^a2^...ai^...^aN=a1^a2^...ai’^...^aN=0,则两边同时异或a1,可得a2^...ai^...^aN=a2^...ai’^...^aN,
继续两边异或a3...aN(除了共有的ai,ai'),由此可推出ai=ai'。显然这不是合法的移动。
由以上证明得出
1) a1^a2^...ai^...^aN=k<>0,一定存在一步特定移动使得a1^a2^...ai^...^aN=0;
2) a1^a2^...ai^...^aN=0,不存在一步合法移动使得a1^a2^...ai‘^...^aN再次为0,
即当 a1^a2^...ai^...^aN=0时,任意移动一步后都会变为 a1^a2^...ai’^...^aN<>0。
由1)、2)可得
3)当a1^a2^...ai^...^aN=0时,下一步必然为a1^a2^...ai’^...^aN<>0,再下一步可以变为a1^a2^...ai’’^...^aN=0。
必要性:由(a1,a2,...,aN)为奇异局势(必败局势),考虑甲先乙后。
假设a1^a2^...ai^...^aN<>0,那么甲通过移动,可使a1^a2^...ai‘^...^aN=0。如此一直下去,每次乙都只能面对a1^a2^...ai^...^aN=0的局势。
由于游戏的结束点必然为(0,0,...,0),因此乙最终将面对(0,0,...,0)。在乙面对(0,0,...,0)的上一步,设为(b1,...,bN),此时b1^...^bN<>0。
但乙最终先面对了(0,0,...,0),显然是甲胜,这与(a1,a2,...,aN)为奇异局势(必败局势,甲必败)矛盾。
因此必有a1^a2^...ai^...^aN=0。
充分性:由a1^a2^...^aN=0,由3)乙始终有办法让甲面对的局势始终是x1^x2^...^xN=0。因此甲最终面对的必然是(0,0,...,0)的局势,
而(0,0,...,0)就是个奇异局势。
证毕。
相关推荐
在计算机科学中,十六进制(Hexadecimal)是一种逢16进1的进位制,通常用于表示二进制数据,因为每个十六进制数字可以代表4...通过理解其原理并掌握在Java中的实现方式,我们可以更有效地解决各种与位运算相关的问题。
在线异或运算,也称为BCC(Block Check Character)或息组校验码,是一种简单而有效的错误检测方法,常用于通信和数据存储领域。它通过计算数据块中所有字节的异或值来生成一个校验码,该校验码能够反映出数据中的...
比如简单的凯撒密码,通过一个固定的偏移量与明文异或,可以得到密文,解密时再用相同的偏移量与密文异或,就能恢复原始信息。异或运算是可逆的,这是它在加密中常用的特性。 此外,异或运算也常用于数据校验,如...
异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或...
通过对数据块进行异或运算生成一个校验码,如果接收的数据与发送的数据经过异或后得到的校验码相同,则认为数据传输无误。 “XORTest”可能是这个工具的测试文件,可能包含了一些用于验证工具功能的例子或测试用例...
异或运算,也被称为XOR(Exclusive OR)运算,是计算机科学中的一种基本逻辑运算,它在二进制系统中有着广泛的应用。异或运算的基本性质是:如果两个输入位相同,结果为0;如果两个输入位不同,结果为1。这种特性...
加密解密 (利用异或运算) 进行异或加密解密运算
"图像运算"是一个广泛的领域,包含位与、位或、位非以及位异或等多种操作。这些运算在图像处理软件、游戏开发、计算机视觉技术中都有广泛应用。例如,位与运算常用于创建掩码或选择图像的特定区域,位或则用于合并...
异或运算的一个性质是:任何数与0进行异或运算,结果保持不变;相同的数进行异或运算,结果为0。因此,可以这样交换两个变量`a`和`b`的值: ```java a = a ^ b; // 现在 a 是两者的异或 b = a ^ b; // 现在 b 是 a ...
这里的"52xor25计算结果"可能是描述了一个具体的异或操作,即数字52与25进行异或运算的结果。异或两个数字时,会将它们的二进制表示逐位比较并应用异或规则。例如,52(十进制)是00110100(二进制),25(十进制)...
最新单片机仿真 用P0口显示按位异或运算结果最新单片机仿真 用P0口显示按位异或运算结果最新单片机仿真 用P0口显示按位异或运算结果最新单片机仿真 用P0口显示按位异或运算结果最新单片机仿真 用P0口显示按位异或...
异或运算在卡诺图中的表示方法,将他们紧密的联系在一起。
异或运算,也称为XOR,是计算机科学和逻辑运算中的基本操作之一。它在二进制系统中尤其重要,因为它具有独特的性质和多种应用场景。异或运算符通常表示为"^",并且遵循一系列特定的规则。 首先,异或运算的基本定义...
2. **解密过程**:由于异或运算是可逆的,解密过程只需将密文与相同的密钥再次进行异或操作,即可恢复原始明文。公式为:`plaintext = ciphertext XOR key`。 在C#中,可以使用`^`运算符来执行异或操作。例如,如果...
异或(XOR)是一种基本的逻辑运算符,在...总的来说,“按位异或校验和计算器”是一个实用的工具,通过异或运算来检测和验证数据的完整性。在处理大量数据、确保数据传输准确无误的环境中,这样的工具是非常有价值的。
#### BP网络与异或运算 BP网络是一种多层前馈神经网络,它通过反向传播算法来调整网络中的权重,从而最小化网络输出与期望输出之间的误差。异或运算是一个经典的二进制布尔函数,其特点是当两个输入不同时结果为真...
异或运算加密(Delphi) 一个Delphi写的异或加密解密工具
奇偶校验的基本运算是异或运算(XOR)。利用这个原理,可以设计出奇偶校验电路。 **函数F的逻辑功能:** 设有n个输入变量\( X_1,X_2,\ldots,X_n \),则函数\( F=X_1\oplus X_2\oplus\ldots\oplus X_n \)的逻辑功能...
异或运算,也称为XOR(Exclusive OR),是计算机科学中的基本逻辑运算之一。它具有以下特点:当两个输入位相同,结果为0;当两个输入位不同,结果为1。这种运算在数字电路和编程中都有广泛的应用。 在描述中提到的...
例如,二进制数101(5)和011(3)进行异或运算,其结果为110(6),因为1与0异或得1,0与1异或得1,而0与0异或得0。 2. **基本性质**: - **零的异或特性**:任何数与0进行异或运算,结果都等于这个数本身。例如...