- 交换
void swap(int &a, int &b){ a = a ^ b; b = a ^ b; a = a ^ b; }
- 判断奇数和偶数
if(n & 1){
//奇数
}
else{
//偶数
}
- 异或运算判断一个是否出现两次
任何数和 00 做异或运算,结果仍然是原来的数,即 a⊕0=a a⊕0=a。
任何数和其自身做异或运算,结果是 00,即 a⊕a=0a⊕a=0。
异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=ba⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。
- 将 n二进制表示的最低位 1 移除
n & (n - 1)
- 判断2的幂次
如果 nn 是正整数并且 n & (-n) = n,那么 n 就是 2 的幂,因为−n 的二进制表示为 n 的二进制表示的每一位取反再加上 1
- pb初始化成员变量方法
private变量列表:
::sim_msg::Header* header_;
::sim_msg::Override_Throttle* throttle_;
::sim_msg::Override_Brake* brake_;
::sim_msg::Override_SteeringWheel* steering_wheel_;
::sim_msg::Override_ParkingBrake* parking_brake_;
::sim_msg::Override_Clutch* clutch_;
::sim_msg::Override_Gear* gear_;
::memset(&header_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&gear_) -
reinterpret_cast<char*>(&header_)) + sizeof(gear_));
总结:内存长度最后一个指针减去第一个指针转成size_t类型在加上最后一个成员变量指针的大小