Hacks
二进制中 1 的个数 ——《C/C++ 位运算黑科技 03》
原理# 计算一个二进制数中 1 的出现次数其实很简单,只需要不断用 v & (v - 1) 移除掉最后一个 1 即可,原理可以参考这篇文章:2 的幂次方 ——《C/C++ 位运算黑科技 02》
上述方法是一个普通的思考方向,下面我会介绍另外一种思路:并行计数器…
2 的幂次方 ——《C/C++ 位运算黑科技 02》
原理# 现在我们使用的二进制码表示都很简单:1、2、4、8、16・・・・・・
仔细观察就可以发现:在一串二进制数中,如果只出现一个 1,它就是 2 的幂次方
代码#
Copy
template <typename T, class = std::enable_if_t<std…
绝对值 ——《C/C++ 位运算黑科技 01》
原理# 求一个数的绝对值就是将负数转为正数,只需要求其补码即可(反码加一)
代码#
Copy
template <typename T, class = typename std::enable_if_t<!std::is_unsigned_v<T>>>
inline…