前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于位运算几道经典题目

关于位运算几道经典题目

作者头像
张凝可
发布2019-08-21 22:55:51
7170
发布2019-08-21 22:55:51
举报
文章被收录于专栏:技术圈

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

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

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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.

代码语言:javascript
复制
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,等偶数形式

代码语言:javascript
复制
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,国庆快乐。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年10月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档