将数字转换为设置了 N 位的字节

Convert number to byte with N bits set

我有一个 1-8 范围内的数字。

我想将其转换为

0b00000001  // 1
0b00000011  // 2
0b00000111  // 3
0b00001111  // 4
0b00011111  // 5
0b00111111  // 6
0b01111111  // 7
0b11111111  // 8

不使用switch或者for循环可以吗? 最好使用简单的公式。

你要找的是

(1 << v) - 1