美文网首页
异或用法

异或用法

作者: 忆小芝 | 来源:发表于2016-12-19 10:02 被阅读0次

    作为leetcode入门的第一题,461,做如下总结,对于异或和二进制一直用的很不熟悉,学的也非常不扎实,所以做题时并不轻松。

    计算机世界是二进制世界,所以所有数字都是以二进制储存的,不需要额外转换。

    X^Y的意义是当x和y都化成二进制数时,将其每一位一一对应,相同为1,不同为0.其结果是对应后的二进制数的十进制形式。

    而二进制数字缩位的方法是将其十进制形式除以2.(当其是2的倍数时,如不是需要减1)

    将问题转换为求一个二进制数有多少个1时,问题会变得简单一些。即十进制数与2mod,如果余数为1,说明最后一位为1,计算器进行+1运算,然后将其-1,除以2,进行缩位运算。

    ```

    public class Solution {

    public int hammingDistance(int x, int y) {

    int res =x^y;

    int cnt=0;

    for(int i=0;i<31;i++){

    if(res%2==1){

    cnt=cnt+1;

    res=(res-1)/2;

    }

    else{

    res=res/2;

    }

    }

    return cnt;

    }

    }

    ```

    希望继续坚持,加油~


    相关文章

      网友评论

          本文标题:异或用法

          本文链接:https://www.haomeiwen.com/subject/euzzmttx.html