int countBitDiff(int m, int n) { int cos = 0; // 定义int 计数器 for(int i=0 ; i<32 ; i++){ // 在16位的编译器中,int是16位,在32位的编译器中,int是32位的。即将传入的int m n 每个位置遍历对比 int m1 = m & 1; //可以理解为 二进制数当前位的数 ,m1 = 1 或者 0 int n1 = n & 1; if(m1 ^ n1) cos++; // 按位异或 ^ 即判断 m1 和 n1,如果相同则为0 不进入if,否则不相同判断为1进入if cos++ m = m >> 1; // 带符号右读1位 n = n >> 1; } return cos; //循环完32次后,return cos值 }