任何一个数取反加1之后, 第一个1至右 的位数上的数字都相同
然后再和原数 相与, 把第一个1保留, 其他变为0
int result = num & (~num+1);
把一个数最右边那一位1弄出来
原文:https://www.cnblogs.com/--here--gold--you--want/p/15201271.html