c - 为给定输入生成以下位掩码的最佳方法?

标签 c bit-manipulation bitmask

我正在尝试找出生成以下位掩码的最佳方法:- 对于给定的输入 n,输出将是一个位掩码,其中第一个 (n-1) 位已设置,所有其他位未设置。

例子:

if n = 1, output = 0x00000001 = 00000000000000000000000000000001
if n = 2, output = 0x00000003 = 00000000000000000000000000000011
if n = 3, output = 0x00000007 = 00000000000000000000000000000111

我知道明显的迭代方式(一次设置一个位),这将花费 O(n) 时间....我只是想知道是否有任何“位魔术”可以在恒定时间,或者至少是次线性时间(不使用 LUT !!)

有人要吗?

最佳答案

应该这样做:(1 << n) - 1

关于c - 为给定输入生成以下位掩码的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440467/

相关文章:

c - 什么更好 : Select vs Threads?

java - 在 Java BigInteger 中移动单个半字节?

java - Java BigDecimal 中的 Karatsuba 乘法实现

android - 在 Android 开发中使用位掩码自动匹配玩家

c++ - for循环中的多个条件

复制结构体和数组

C语言计算2的最高次幂整除一个数

javascript - 位掩码:如何确定是否只设置了一位

algorithm - 位掩码——何时使用十六进制与二进制

c - 在 C 中将文本导出到 .txt 文件