//求tmp中01的跳变个数
tmp2 = tmp >> 1; //右移一位
tmp2 |= (tmp & 0x01)<<7; //将tmp2的高位置成tmp的低位
tmp2 ^=tmp; //这样tmp2中1的个数就是跳变次数
sum=0;
while(tmp2){ //求tmp2中1的个数
tmp2&=(tmp2-1);
sum++;
}
sum中的数即为tmp中01跳变次数;
注:求的是循环跳变,即最高位与最低位不同的话也算是一次跳变。