C++ 位运算技巧:设置整数最高位和最低位为 1
这句代码使用位运算来设置一个整数的最高位和最低位为 1。
'<<' 是左移位运算符,将一个数的二进制表示向左移动指定位数。
'|' 是位或运算符,对两个数的二进制位执行按位或操作。
在这句代码 'num |= (1 << bits - 1) | 1' 中,我们首先使用 '(1 << bits - 1)' 将数字 1 向左移动 'bits - 1' 位。然后,使用 '|' 运算符将结果与 1 进行按位或操作。
这个操作的目的是将 'num' 的最高位和最低位都设置为 1。
具体步骤如下:
- '(1 << bits - 1)' 将数字 1 向左移动 'bits - 1' 位,生成一个只有最高位为 1 的二进制数。例如,如果 'bits' 等于 4,则 '(1 << bits - 1)' 将生成二进制数 1000。
- '(1 << bits - 1) | 1' 使用位或运算符将生成的二进制数与 1 进行按位或操作,最终设置最高位和最低位为 1。
这样,我们可以使用这个操作来确保生成的随机整数 'num' 的最高位和最低位都是 1,以确保生成的数为奇数。
例如,如果 'bits' 等于 4,经过这个操作后,'num' 的二进制表示可能是 1001,即十进制的 9。
这个操作的作用是设置一个整数的最高位和最低位为 1,以确保生成的随机数为奇数,并保证所生成的大素数具有所需的位数。
原文地址: https://www.cveoy.top/t/topic/bBjK 著作权归作者所有。请勿转载和采集!