0
点赞
收藏
分享

微信扫一扫

Java 求一个数的二进制第n位是否为1

AbrahamW 2022-02-09 阅读 72
java

 很简单。设数为num,将num右移n-1位在&1 ,如果num>>(n-1)&1为1,第n位为1,num>>(n-1)&1为0,第n位为0。
 求第1位是否为1则就是 num &1即可。
为何要右移>>(n-1):将第n位数变到个位,这样方便&1运算。&1也是和个位数&。
为何要&1。逻辑& : 0&0 = 0 , 0&1 =0 , 1&1 = 1;只有1&1才能为1。&1的话就只会返回一个数。
 函数示例:

 //num的第n位数是1返回true,否则返回false
 static boolean isOne(int num , int n){
        return  (num>>(n-1)&1)==1?true:false ;
 }

 代码示例:

//求7的二进制前四位
public class Test {
    static int isOne(int num , int n){
        return  num>>(n-1)&1 ;
    }
    public static void main(String[] args) {
        int num = 7 ; //二进制为 0111
        for(int i = 1 ;i<=4;i++){
            System.out.println("第"+i+"位为0:"+isOne(num,i));
        }
    }
}

在这里插入图片描述
这个也可以搭配2的n次方数来选择1~n的数选与不选的所有方案

举报

相关推荐

0 条评论