我有一个由掩码applicationReserved = 0x0F000000指示的4位范围的选项集。由此,我想生成可能的值0x010000000x020000000x03000000,...

我想出了一些可能的解决方案,但我怀疑可能有比这更清晰的表达方式:

applicationReserved & -applicationReserved
applicationReserved & -applicationReserved << 1
...


要么

applicationReserved / 15
applicationReserved / 15 * 2
...

最佳答案

我认为这与您在评论中所描述的最接近:

let x = 0x0F0000000
var offset = 0

while offset < 63 && (x & (1 << offset)) == 0 { offset += 1 }

for i in 0..<16 {
    let y = i << offset
    print(String(y, radix: 16))
}

关于swift - 范围内的值的位操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44137204/

10-12 16:04