for(;n;n>>=1)

for(;n;n>>=1) 表示:n 从 n 开始,不断去掉(二进制)最后一位(也等于不断除以 2)(且n!=0),如:n =10,二进制为 n = 1010.

所以

for(;n;n>>=1){
  cout<<n<<" ";

}

输出的结果为:

10 5 2 1

备注:10=>1010  5=>0101  2=>0010  1=>0001

所以,for(;n;n>>=1)=>while(n!=0) n=n/2;

猜你喜欢

转载自www.cnblogs.com/lxy050129/p/10297740.html
N!
n
N*