我正在尝试找出生成以下位掩码的最佳方法: - 对于给定的输入 n,输出将是一个位掩码,其中设置了第一个 (n-1) 位,而所有其他位都未设置。
例子:
if n = 1, output = 0x00000001 = 00000000000000000000000000000001
if n = 2, output = 0x00000003 = 00000000000000000000000000000011
if n = 3, output = 0x00000007 = 00000000000000000000000000000111
我知道明显的迭代方式(一次设置一个位),这将花费 O(n) 时间....我只是想知道是否有任何“位魔术”可以在恒定时间内做到这一点,或至少亚线性时间(不使用LUT !!)
有接受者吗?