什么是枚举1到n之间所有第k位设为1的数字的最佳方法?
例如: 当n = 12且k = 1时,答案将是1、3、5、7、9和11。 如果k = 2,则答案将是2、3、6、7、10和11。
一种简单的方法是循环遍历n并检查第k位是否设置(通过检查num & (1 << (k-1))是否为1或0),但是否有更好的方法来做到这一点?
例如: 当n = 12且k = 1时,答案将是1、3、5、7、9和11。 如果k = 2,则答案将是2、3、6、7、10和11。
一种简单的方法是循环遍历n并检查第k位是否设置(通过检查num & (1 << (k-1))是否为1或0),但是否有更好的方法来做到这一点?