000 001 010 011 100 101 110 111
现在我们规定在这n位中,如果该位上是1,那么从右往左数该位是多少位:假设为t,那么t就选中:例如:110中,代表3和2被选中,1没有被选中。
具体实现算法如下:
[java]
public static void getNM(int n,int m)
{
int num=1<
{
int sum=0;
for(int j=i,k=1;j>0;j=j>>1,k++)
{
if((j&1)==1)
{
sum+=k;
}
if(sum==m)
{
int val=1;
for(int k=i;k>0;k=k>>1,val++)
{
if((k&1)==1)
{
System.out.print(val+" ");
}
}
System.out.println();
}
}
}