### Java 使用异或实现变量互换
异或运算(XOR)有一个有趣的性质,即对于任意整数 `a` 和 `b`,有 `a ^ b ^ b = a` 和 `a ^ a = 0`。利用这一性质,我们可以不使用临时变量来交换两个变量的值。
public class SwapWithXOR {
public static void main(String[] args) {
int a = 5, b = 10;
System.out.println("Before swap: a = " + a + ", b = " + b);
// 使用异或运算交换a和b的值
a = a ^ b;
b = a ^ b; // 此时b变为原来的a
a = a ^ b; // 此时a变为原来的b
System.out.println("After swap: a = " + a + ", b = " + b);
}
}
### Java 使用异或进行简单加密解密
异或也可以用于简单的加密解密过程,因为 `x ^ key` 可以用来加密 `x`,而 `(x ^ key) ^ key` 则可以解密回 `x`。但请注意,这种加密方法非常基础,仅适用于理解异或的性质,不适合实际的安全加密需求。
public class XOREncryptDecrypt {
private static final int KEY = 0b1101001; // 示例密钥
public static int encrypt(int value) {
return value ^ KEY;
}
public static int decrypt(int encryptedValue) {
return encryptedValue ^ KEY;
}
public static void main(String[] args) {
int originalValue = 65; // ASCII码中的'A'
System.out.println("Original: " + originalValue + " (ASCII: " + (char)originalValue + ")");
int encrypted = encrypt(originalValue);
System.out.println("Encrypted: " + encrypted);
int decrypted = decrypt(encrypted);
System.out.println("Decrypted: " + decrypted + " (ASCII: " + (char)decrypted + ")");
}
}
在这个例子中,我们定义了一个简单的加密和解密函数,它们使用了一个固定的密钥 `KEY`。我们加密了ASCII码中的 `'A'`(值为65),然后解密回原来的值,并打印出相应的字符。