luc*_*egh 2 bit-manipulation swift
我需要执行此函数以从无符号的64位整数中获取lsb,但操作失败.我不是很善于按位操作; 有人可以帮我一把吗?
func lsb(id: UInt64) -> UInt64 {
return UInt64(Int64(id) & -Int64(id))
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
您需要避免3种类型的操作溢出:
以上所有内容都改为无溢出操作,您的代码变为:
func lsb(id: UInt64) -> UInt64 {
return UInt64(bitPattern: Int64(bitPattern: id) & (0 &- Int64(bitPattern: id)))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |