懂二进制

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

输入例子:

1999 2299

输出例子:

7

class Solution {
public:
    /**
     * 获得两个整形二进制表达位数不同的数量
     *
     * @param m 整数m
     * @param n 整数n
     * @return 整型
     */
    int countBitDiff(int m, int n) {
        m^=n;
        int a=0;
        for(int k=0;k<32;k++){
            if(((unsigned)m>>k)&1)
                a++;
        }
        return a;
    }
};
时间: 2024-08-22 20:07:32

懂二进制的相关文章

2016校招真题编程-懂二进制

题目描述 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 解题思路:异或,除二取余 源代码: package SuperHakceMainPackage; import java.util.Scanner; public class SuperHakceMian { int countBitDiff(int n,int m){ return n ^ m; } int findN

2015小米暑期实习笔试题_懂二进制(位运算)

总共3道题,最后一道还没AC出来... 世界上有10种人,一种懂二进制,一种不懂. 那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 此题解法类似于<编程之美>上面看到的某题 代码: #include <iostream> using namespace std; int countBitDiff(int m, int n) { int sum=0; for(int i=0;i<32;i++) if(

世界上有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+

[小米]懂二进制

时间限制:1秒 空间限制:32768K 热度指数:35899 算法知识视频讲解 题目描述 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7思路:在二进制中,统计两个数的相应位不同可以利用异或,运算结果相同为0,不同为1,所以异或结果中1的个数就是不同的位数. 1 class Solution { 2 public: 3 /** 4 * 获得两个整形二进制表达位数不同的数量 5 *

两个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-

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

这是一道小米校招真题 题目描述 世界上有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

关于二进制枚举

算是彻底搞懂二进制枚举吧. 首先一个集合的子集有2^n个,所以我们枚举的个数有(1<<n)个: 所以 for(int i=0; i<(1<<n); i++) 我们知道二进制枚举的过程如下: 每个位置值为1则保留,不为1则舍弃 : 设s=13(二进制为1101)那么我们保留0 2 3位置上的数值: 那么我们如何找到每个位置上的数值呢? 我们遍历的是二进制的十进制表示(比如13),我们当然可以转化为二进制在枚举每一位,但是,这很麻烦: 一个很巧妙的方式就是利用位运算: 1<

&lt;世界是数字的&gt;读书笔记

<世界是数字的>读书笔记 <我是一只IT小小鸟>还余温未凉,老师就给我们介绍了新书名为<世界是数字的>.刚开始看这书名觉得世界是数字化的不是很正常嘛,新世纪新时代当然要有新改革,现代市场早就已经被数字产品给占领了,像笔记本电脑,数码相机等高科技产品在21世纪都是,屡见不鲜,不足为奇了.但是看完这本<世界是数字的>后,我发现我对数字化的世界还是停留在一知半解的地步. 第一章问我们计算机里有什么?计算机里有什么,我的第一反应就是鼠标键盘啊,这么想的肯定不止我一个

十大流行linux

你可曾知道Linux的魅力或威力来自哪里?那就是,由于众多发行版百花齐放,Linux的阵营日益壮大,每一款发行版都拥有一大批用户,开发者自愿为相关项目投入精力.Linux发行版可谓是形形色色,它们旨在满足每一种能想得到的需求.本文就是为了简述某一款发行版为何存在.该发行版的目标用户是哪些,以及它与其他发行版相比有什么样的特殊功能. 1. Debian Debian运行起来极其稳定,这使得它非常适合用于服务器.Debian平时维护三套正式的软件库和一套非免费软件库,这给另外几款发行版(比如Ubun