2 个版本
使用旧的 Rust 2015
0.1.1 | 2017年2月23日 |
---|---|
0.1.0 | 2017年2月22日 |
986 在 硬件支持
每月下载 22 次
115KB
2K SLoC
可移植的高级位运算算法
我们之所以做这些,是因为我们能够做到。
算法
- 具有描述性名称,以简化位运算的代码阅读
- 通常优化为完美的汇编代码(并且始终在夜间使用 bitintr crate)
- 目前仅在
稳定版不稳定版上工作 :( 由于目前的专业化。
示例
extern crate bitwise;
use bitwise::word::*;
fn main() {
let u = outer_perfect_shuffle(0b_1001_1111u8);
let v = inner_perfect_shuffle(0b_1001_1111u8);
let w = u.copy_bit(4u8, v, 3u8);
assert_eq!(w.parallel_bits_deposit(u), 0b_1001_0011u8);
}
支持的编译器
所需的最小 rustc 版本是 >= 1.13.0。
目前需要不稳定版。
性能
某些算法(如Morton Z-Curve编码/解码例程)在编译时根据目标功能(如BMI2支持)切换实现。
许可证
在 MIT 许可证 下许可。
致谢
在我们之前的巨人
- Matthew Fioravante的N3864 C++常量表达式位运算库提案及其伴随库: stdcxx-bitops。
- Henry S. Warren的Hacker's Delight。
- Jeroen Baert的libmorton。
- 特别是棋类编程Wiki中的位操作部分。
- 实时碰撞检测.
- 我自己的bitintr库。
- Jasper Neumann的编程页面。
- Jörg Arndt的Matters Computational: Ideas, Algorithms, Source Code。
贡献
请!请注意,所有贡献都应按照上述方式许可,不得附加任何额外条款或条件。
依赖
~73KB