【发布时间】:2026-02-08 18:20:03
【问题描述】:
我需要在 Swift 中找到整数的most significant bit (MSB) 的值(或位置)。
例如:
- 输入数字: 9
- 二进制输入: 1001
- MS 值为二进制: 1000 ->(十进制为 8)
-
MS 位置为十进制: 3(因为
1<<3 == 1000)
许多处理器(英特尔、AMD、ARM)都有这方面的说明。在 c 中,these are exposed。这些指令是否可以通过库函数在 Swift 中类似地使用,还是我需要 implement some bit twiddling?
这个值对我来说更有用。
如果返回一个位置,则可以通过一次移位轻松得出该值。
相反,除非有一个快速的Hamming Weight / pop count 函数可用,否则根据值计算位置并不是那么容易。
【问题讨论】:
-
使用位操作更容易找到该值(例如您链接的内容减去魔术 DeBruijn 乘法/查找),但我对 Swift 了解不多我找不到一个