注意int的范围为-(1<<31) 到 (1<<31)-1
int
-(1<<31)
(1<<31)-1
for(int i=1<<31;i>=1;i>>=1) 应改为
for(int i=1<<31;i>=1;i>>=1)
for(int i=1<<30;i>=1;i>>=1)