将数字转换为字节,并设置N位

Mig*_*ork 0 c bit-manipulation

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

我想把它转换成

0b00000001  // 1
0b00000011  // 2
0b00000111  // 3
0b00001111  // 4
0b00011111  // 5
0b00111111  // 6
0b01111111  // 7
0b11111111  // 8
Run Code Online (Sandbox Code Playgroud)

可以在没有开关或for循环的情况下完成吗?理想情况下,配方简单.

Ish*_*ael 8

你在寻找什么

(1 << v) - 1
Run Code Online (Sandbox Code Playgroud)