我需要在Swift中找到整数most significant bit (MSB)的值(或位置)。
例如:
1<<3 == 1000
)许多处理器(英特尔,AMD,ARM)都有此说明。在c中,these are exposed。这些说明是否在Swift中通过库函数可用,或者我需要implement some bit twiddling?
在我的情况下,该值更有用。
如果返回一个位置,则可以通过一次移动轻松获得该值。
相反,除非有快速Hamming Weight / pop count功能,否则从价值计算位置并不容易。
答案 0 :(得分:3)
您可以使用flsl()
功能(&#34;查找最后设置位,长&#34;):
let x = 9
let p = flsl(x)
print(p) // 4
结果为4
,因为flsl()
和相关函数将从1开始的位编号为最低有效位。
在英特尔平台上,您可以使用_bit_scan_reverse
内在的,
在我在macOS应用程序中的测试中,这转换为BSR
指令。
import _Builtin_intrinsics.intel
let x: Int32 = 9
let p = _bit_scan_reverse(x)
print(p) // 3