c++求两个数异或的函数
时间: 2024-05-09 21:16:49 浏览: 19
以下是求两个数异或的函数示例代码:
```c
int bitXor(int x, int y)
{
int result = (x & ~y) | (~x & y);
return result;
}
```
该函数接受两个整数 x 和 y 作为参数,返回它们的异或值。在函数内部,使用位运算符实现异或。
相关问题
c++定义异或加密类
以下是一个简单的C++异或加密类的定义,它可以对字符串进行加密和解密:
```c++
#include <string>
#include <iostream>
class XorEncryptor {
public:
XorEncryptor(char key) : _key(key) {}
std::string encrypt(const std::string& data) {
std::string result;
for (char c : data) {
result += c ^ _key;
}
return result;
}
std::string decrypt(const std::string& data) {
return encrypt(data); // 异或加密解密方式相同
}
private:
char _key;
};
int main() {
XorEncryptor encryptor('a');
std::string original = "Hello World!";
std::string encrypted = encryptor.encrypt(original);
std::string decrypted = encryptor.decrypt(encrypted);
std::cout << "Original: " << original << std::endl;
std::cout << "Encrypted: " << encrypted << std::endl;
std::cout << "Decrypted: " << decrypted << std::endl;
return 0;
}
```
在上面的代码中,我们定义了一个名为`XorEncryptor`的类,它有一个公共构造函数,用于传递加密密钥。该类还提供了两个公共函数:`encrypt()`和`decrypt()`,它们分别用于加密和解密数据。加密和解密过程都是通过对每个字符进行异或运算来实现的。
在`main()`函数中,我们创建了一个`XorEncryptor`对象,并使用它来加密和解密一个字符串。运行上面的代码,将会输出以下结果:
```
Original: Hello World!
Encrypted: ^_aa`T^`T`aaY
Decrypted: Hello World!
```
这里我们使用字符`'a'`作为加密密钥,你可以根据自己的需要更改。
c++hash函数头文件
C++ 中的哈希函数有很多种,但是没有一个标准的哈希函数库。不过,C++11 引入了一个新的哈希函数头文件 `functional` ,其中定义了两个模板类 `hash` 和 `hash_combine` ,可以用于自定义哈希函数。
以下是使用 `functional` 头文件定义哈希函数的示例代码:
```c++
#include <iostream>
#include <string>
#include <functional>
using namespace std;
struct Person {
string name;
int age;
};
class PersonHash {
public:
size_t operator()(const Person& p) const {
return hash<string>()(p.name) ^ hash<int>()(p.age);
}
};
int main() {
unordered_map<Person, int, PersonHash> m;
Person p1{"Alice", 20};
Person p2{"Bob", 25};
m[p1] = 1;
m[p2] = 2;
cout << m[p1] << endl;
cout << m[p2] << endl;
return 0;
}
```
在上面的示例代码中,我们定义了一个结构体 `Person` ,包含两个属性 `name` 和 `age` 。然后我们定义了一个类 `PersonHash` ,其中重载了圆括号运算符 `operator()` ,用于计算 `Person` 对象的哈希值。在 `operator()` 中,我们使用了 `hash` 模板类的默认哈希函数来计算 `name` 和 `age` 的哈希值,并使用异或运算符 `^` 将它们合并成一个哈希值。
最后,我们使用 `unordered_map` 容器来存储 `Person` 对象和对应的值,并使用自定义的哈希函数类 `PersonHash` 作为容器的第三个模板参数。