专栏首页技术圈关于位运算几道经典题目

关于位运算几道经典题目

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_27717921/article/details/78158628

之前就和同学讨论过几道位运算的题目,觉得挺有意思的,就记录一波。 这样坐着敲字总让我想起在出租房里百无聊赖的日子、 题目一: single number 问题 整型数组中只有一个整数只出现了一次,其他整数都出现了两次,找出出现一次的这个整数,并返回。 异或运算 利用异或运算整型数自身与自身异或为0的特点。

int singleNum(int[] arr){
    int res = arr[0];
    for(int i=1;i<arr.length;i++){
        res=res^arr[i];
    }
    return res;
}

题目二:一个十进制数的二进制形式中1的个数 与运算 利用与运算0&1=0,不断将一个非零数不断将二进制形式中的1置于0

int get_one_num(int n){
    int res = 0;
    while(n){
       n = n&(n-1);
       res++;
    }
    return res;
}

题目三:判断一个数是否为2的幂,比如1=2^0,2=2^1,4=2^2 与运算 利用与运算中,2&1=0,4&3=0,利用2的幂-1与2的幂的与运算结果为0,2的幂的二进制形式一定只有一位为1,其他为0,而他的减一形式一定是这一位为0,其他为1.

boolean istwores(int n){
     return n&(n-1)==0?True:False;
}

题目四 判断一个数是否为4的幂,4^0=1,4^1=4,4^2=16 4^n=2^(2n) 则如果数是4的幂,那么首先一定是2的幂,并且2n必然取值只有0,2,4,等偶数形式

boolean isfourres(int n){
       return n&&(n-1)==0&&n&(0x55555555)?True:False;
}

题目五 判断一个数是否为3的幂,3^0=1,3^1=3,3^2=9 如果一个数是3的幂,那么它具有它的所有约数也都是3的幂的形式,比如,3^2=9,9的约数有1,3,9,都是3的幂的形式。 所以我们的思路是找到整型最大范围内是3的幂形式的那个数,这个数记作为maxNum 要判断n是否是3的幂的形式,那么只需要看maxNum%n==0?True:False; int maxNum = (int) Math.pow(3,(int)(Math.log(0x7fffffff)/Math.log(3))); OK,国庆快乐。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 动态规划算法举例解析(最大收益和最小损失选择)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    张凝可
  • 面试题目集(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    张凝可
  • 在其他数都出现k次的数组中找到只出现一次的数

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    张凝可
  • C++的函数对象优于函数指针地方

    转载自:http://blog.csdn.net/huang_xw/article/details/7934156    

    Daotin
  • P2580 于是他错误的点名开始了

    题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人。 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉...

    attack
  • 杨辉三角 II(leetcode.119)

    Cnk​=n!/(k!(n−k)!)=(n∗(n−1)∗(n−2)∗...(n−k+1))/k!

    euclid
  • Codeforces Round #513 D. Social Circles(思维)

    题目链接:http://codeforces.com/contest/1060/problem/D

    Ch_Zaqdt
  • LeetCode 191 Number of 1 Bits

    这里用到了位运算, 如数字 5, 二进制位为 101, 那么使用 & 运算, 和 1 进行与运算, 如:

    一份执着✘
  • Zoj 3865 Superbot

    若羽
  • ECJTUACM16 Winter vacation training #5 题解&源码

    A-------------------------------------------------------------------------------...

    Angel_Kitty

扫码关注云+社区

领取腾讯云代金券