2022-03-13

1,用一条语句判断是不是2的整数次方。

这个题的思路就是用二进制的方法去想,如果这个数是2的整数次方的话,他的高位就是1,比如说8的话,它的二进制表示就是1000,那他的n-1也就是7的二进制就变成了高位为0,而低位为1的情况,7的二进制表示为0111,因为用的是  位运算里面的  & 运算,就是当两个都为1 的时候,才是一,所以说这里7和8二进制的结果为0000,也就是==0.由此作为判断的条件。

if ((N-1) &(N)==0)  此句成立就表示N是2的整数次方。

package sz;

import java.util.Scanner;

public class 是不是2的整数次方 {//方法2

    public static void main(String[] args) {

        Scanner s=new Scanner(System.in);

      int N=s.nextInt();//本题要用到位运算和二进制的思想

        if(((N-1)&N)==0){//例如说N=8,那么N-1就是7,8的2进制是1000,而7是0111;因为用的是  位运算里面的  & 运算,就是当两个都为1 的时候,才是一,所以说这里7和8二进制的结果为0000,也就是==0.由此作为判断的条件。

            System.out.println(N+"是2的整数次方");

        }

        else System.out.println(N+"不是2的整数次方");

    }

}

package sz;

import java.util.Scanner;

public class 是不是2的整数次方2 {

    public static void main(String[] args) {

        Scanner s=new Scanner(System.in);

        int N =s.nextInt();

        int sums=0;//计数,以为如果是2的整数次方的话,只会得到一个1,比如说8的2进制是1000;而6是1100;7是0111;

        String str=Integer.toString(N,2);//将输入得数转化成2进制

        char []a=str.toCharArray();//将字符串存入字符数组里面

        for (int i=0;i<a.length;i++){

        if (String.valueOf(a[i]).equals("1")){//先把数组变成字符串然后再用字符串中的equals比较每一个元素看看有几个1

            sums++;

            }

        }

        if (sums==1){

            System.out.println("yes");

        }

        else System.out.println("no");

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目: 不用循环 一条语句判断是不是2的整数次方 tip:2的整数次方二进制数表示上只有一个1(除1外). 两个样...
    掌灬纹阅读 366评论 0 0
  • 1、常量与变量 程序执行中值不会变化的为常量,会变化的为变量。如定义一个常量PI,表示圆周率,圆周率不会改变;定义...
    元富阅读 621评论 0 0
  • ● 如何打印二叉树每层的节点? 考察点:二叉树 参考回答: 实现代码: import java.util.Arra...
    le_u阅读 509评论 0 0
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,263评论 1 44
  • 1.System.exit(int status):main方法正常退出时,程序的退出代码为0(通常都不写这句,默...
    luckee阅读 305评论 0 0