美文网首页
(10)位运算题目

(10)位运算题目

作者: 顽皮的石头7788121 | 来源:发表于2019-03-13 11:12 被阅读0次

    很多时候使用位运算可以简化一些问题的求解。包括&与运算;|或运算;^异或运算;<<左移;>>右移运算。

    (1)2进制表示元素的组合

    算法思路:假设有3个元素,则可以用二进制表说0-8,某一位为1则表明选取了该元素。

    (2)二进制中的1的个数

    算法思路:
    方法1:最右位于1做与运算,结果为1则加1,直接右移。但如果是负数的话,右移会变成全1,陷入死循环。同时右移与除2是等价的,但是位运算比除法效率高很多。
    方法2:为避免死循环,我们可以最右位与1做与运算,然后1左移1位,再做与运算。
    方法3:把一个整数减去1,再和原来的数做与运算。会把该整数最右边全部变为0,一个整数二进制中有多少个1,就可以做多少次这种操作。

    (3)判断一个整数是不是2的整数次方

    算法思路:2的整数次方的数的二进制只有1位是1,其他位是0,减1后,最高位为0,其他位为1,做与运算,结果为0;

    (4)输入两个数m,n,m的二进制表示需要改多少个才能成为n

    算法思路:两个数异或,计算异或中结果中的1的个数。

    相关文章

      网友评论

          本文标题:(10)位运算题目

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