//求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跳变次数; 注:求的是循环跳变,即最高位与最低位不同的话也算是一次跳变。