两个int整数m和n的二进制表达有多少个位不同

题目描述

世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?

输入例子:

1999 2299

输出例子:

7

题目分析

二进制中,统计两个数的相应位(bit)相同可以采用异或操作,异或运算结果相同为0不同为1。所以两个数异或的结果中1就是相同位数。

    public static int count(int a, int b)
    {
        int m = a ^ b;
        int num = 0;
        while(m>0)
        {
            m &= (m-1);
            num++;
        }
        return num;
    }  

2015年5月7日21:57:17

时间: 2024-08-24 17:47:52

两个int整数m和n的二进制表达有多少个位不同的相关文章

世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7

这是小米2015年暑假实习生第一道笔试题,其实不难,主要用到移位操作和或运算符就可以搞定,具体代码如下: /*世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 */ #include<stdio.h> int countBitDiff(int m, int n) { int data=1; int a,b; int count=0; for(int i=0;i<31;i+

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

 第一种: #include<stdio.h> #include<stdlib.h> int main() {  int m,n,u;  int count=0;  scanf("%d%d",&m,&n);  u=m^n;  while(u)  {   count++;   u=u&(u-1);  }  printf("%d",count);  system("pause");  return 0;

求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同

#include<stdio.h> #define MAX(X,Y) ((X)<(Y)?(X):(Y)) int main() { int a = 1999; int b = 2299; int num = 1; int nam; if (b % 2 == 1) { nam = 1; } else { nam = 0; } do { int A = a % 2; int B = b % 2; if (A != B) { num++; } else { num = num; } a = a

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

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int main(){int num1 = 1999;int num2 = 2299;int count = 0;int ret = num1^num2; //比特位不同异或后结果为1while (ret){ret = ret&(ret - 1);count++;} //将异或后的1输出,即有几个比特位不同printf("%d&q

获得两个整形二进制表达位数不同的数量

这是一道小米校招真题 题目描述 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 1 class Solution { 2 public: 3 /** 4 * 获得两个整形二进制表达位数不同的数量 5 * 6 * @param m 整数m 7 * @param n 整数n 8 * @return 整型 9 */ 10 11 int countBitDiff(int m, int

求两个大整数相乘的积,数字长度在127个字符之内。

计算两个大整数相乘的结果,数字不是double类型能表示的,数字长度没有限制(最大127位). 方法一:使用java中的大整数处理库函数,java.math.BigInteger,java.math.BigDecimal; 方法二:不利用库函数,自己实现其功能,可以练习自己对待复杂问题的处理能力,提高编程水平. 此代码中利于两者的结合,利于库函数可以看自己编写的代码的正确性. 1.主函数 import java.math.BigDecimal; import java.util.Scanner;

【C语言】编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。

/*编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数. 例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4 */ #include <stdio.h> int yue(int a,int b) { int temp; int n; if (a>b) { temp=a; a=b; b=temp; } n=a; if(a==0) return b; else while(n!=0) { if( a%n==0 &&

ACM: A + B Problem II (两个大整数相加)

Code: #include <stdlib.h> #include <stdio.h> #include <string.h> #define MAX 1000 //给数组赋值 void arrV(int a[],int len,int p){ int i; for(i=0;i<len;i++){ a[i]=p; } } //打印数组中的运算结果 void printRverse(int a[]){ int len=0,i=0; while(a[i]!=-1){

(c语法百题7)求两数的整数商 和 余数

知识点: 求商和求余 /   和 % 的用法. 注意 /  中,两个%d的值为整数,即取整.有%f类的,就是商了,带小数的. 内容: 求两数的整数商 和 余数 输入说明: 一行两个整数 输出说明: 一行两个整数 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 18 4 输出样例 : 4 2 #include <stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); print