众所周知,C语言之所以能够制作操作系统,和C/C++支持位运算有很大的关系
在某些情况下,它还是很好用的
1.使用位运算计算加法
我们在计算加法时,一般会这样写:
[C++] 纯文本查看 复制代码 template <typename T>
T add(T a, T b)
{
return a+b;
}
这样没毛病,就是有些慢,那我们有没有办法让他更快一些呢?
[C++] 纯文本查看 复制代码 template <typename T>
T add(T a, T b)
{
return add((a & b) << 1, a ^ b);
}
这样也是可以的ovo
2.使用位运算交换两个变量的值
一般情况下,我们会这样写
[C++] 纯文本查看 复制代码 template <typename T>
void swap(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
我们多用了一个变量temp,占了1-8字节,太浪费了(bushi)
所以我们可以用位运算解决:
[C++] 纯文本查看 复制代码 template <typename T>
void swap(T &a, T &b)
{
a ^= b;
b ^= a;
a ^= b;
}
这样也很nice
3.把数字转成字符
如果我们要把6转化成'6',可以这样写
[C++] 纯文本查看 复制代码 int data = 6;
char ch = data ^ 48; //'6'
4.使用异或代替不等号
[C++] 纯文本查看 复制代码 if (a ^ b){
//不相等
} else {
//相等
}
你学费了吗/ww/xyx
|