C语言:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

#include<stdio.h>
int main()
{
 int m=1999;
 int n=2299;
 int count=0;
 int i=0;
 for(;i<32;i++)   /*在计算机内是按32位二进制来存储的,循环32次*/
 {
  if(m%2!=n%2)
  //1111对2取模后为1
  //1110对2取模后为0     
  //则每次取模相当于得到的是该次循环二进制的最后一位
  //1111对2取整后为111
  //1110对2取整后为111
  //取整相当于将二进制最后一位去掉,开始下次循环
  {
   count++; 
  }
  m/=2;
  n/=2;
 }
 printf("不相同的位数:\ncount=%d",count);
 return 0;
}

或者:

#include<stdio.h>
int main()
{
 int m=1999;
 int n=2299;
 int count=0;
 int i=0;
 for(;i<32;i++)   /*在计算机内是按32位二进制来存储的,循环32次*/
 {
  if(m%2!=n%2)
  //1111对2取模后为1
  //1110对2取模后为0     
  //则每次取模相当于得到的是该次循环二进制的最后一位
  //1111对2取整后为111
  //1110对2取整后为111
  //取整相当于将二进制最后一位去掉,开始下次循环
  {
   count++; 
  }
  m/=2;
  n/=2;
 }
 printf("不相同的位数:\ncount=%d",count);
 return 0;
}

 wKioL1YrBzPy4nrsAADAa0MZMmc383.jpg

你可能感兴趣的:(取余取整)