Ill*_*nia 2 c++ binary bit-manipulation bitwise-operators uint32
用户指定寄存器(LFSR)长度,以整数作为函数的参数,例如,他输入数字5.我需要用所有1位初始化这个5位长度的LFSR(长度为5 11111)并获得种子掩码以一种格式uint32_t- 对于5长度寄存器它将是0x0001f.
0x0001f当用户只输入整数5的整数时,为5位长度寄存器获取掩码的最佳方法是什么?
要生成n位的掩码(其中n <32):
uint32_t mask = (1U << n) - 1U;
Run Code Online (Sandbox Code Playgroud)
说明:考虑n = 5的示例:
1U << n = 1U << 5 = 0000 0000 0000 0000 0000 0000 0010 0000 = 0x20
Run Code Online (Sandbox Code Playgroud)
然后我们减1并得到:
0000 0000 0000 0000 0000 0000 0001 1111 = 0x1f
Run Code Online (Sandbox Code Playgroud)