判断一个数是否为2的n的次方数,六种方法
来源:互联网 发布:台湾图解gv新域名2017 编辑:程序博客网 时间:2024/05/22 14:53
判断一个数是否为2的n的次方数,是一个很简单的问题。但这里是以多种方式来解决此问题
方法一:将要判断的数转换成二进制数,从左至右,判断是否只有一个1
public static boolean method01(int num){ if(Integer.toBinaryString(num).indexOf('1') == Integer.toBinaryString(num).lastIndexOf('1')){ return true; }else{ return false; }}
方法二:将要判断的数与它的前一个数进行按位运算,判断结果是否为0
public static boolean method02(int num){ if((num & (num-1)) == 0) return true; else return false;}
方法三:将要判断的数转换成二进制数,并将其中的0全部舍去,最后判断最后的长度是否为1
public static boolean method03(int num){ return Integer.toBinaryString(num).replaceAll("0", "").length() == 1;}
方法四:将要判断的数转化成字节数组,判断其中的ASCII码
public static boolean method04(int num) { if (num == 0) { return false; } boolean flag = true; String str = Integer.toBinaryString(num); byte[] bytes = str.getBytes(); for (int i = 1; i < bytes.length; i++) { System.out.println(bytes[i]); if (bytes[i] != 48) { flag = false; break; } } return flag; }
方法五:先%2,在除2,判断结果是否为1
public static boolean method05(int num){ int temp = num; while (temp % 2 == 0) { temp /= 2; } if (temp == 1) { return true; } else { return false; }}
方法六:设定一个基数为2,将要判断的数与基数比较,若基数小于判断的数,将基数乘2,直至最后大于或等于要判断的数
public static boolean method06(int num) { boolean flag = false; int baseNum = 2; while (true) { if (num == 1 || baseNum == num) { flag = true; break; } else if (baseNum < num) { baseNum = 2 * baseNum; } else { flag = false; break; } } return flag;}
总结:综上,其实解决问题的基本思想只有两种,只是实现的方式不同而已。
- 将数转化为二进制,判断1的个数
- 将数进行% 、/ 运算判断
0 0
- 判断一个数是否为2的n的次方数,六种方法
- 如何判断一个数是否为2的N次方
- 如何判断一个数是否为2的N次方
- 如何判断一个数是否为2的N次方
- 判断一个数是否为2的N次方问题
- 判断一个数是否为2的N次方问题
- 判断一个数是否为2的N次方
- 判断一个数是否为2的n次方
- 判断一个数是否是2的n次方
- 判断一个数(x)是否是2的n次方
- java判断一个数是否是2的N次方
- 判断一个数是否是2的n次方
- 如何判断一个数是否是2的n次方
- 【C#】判断一个数是否是2的N次方
- 如何判断一个数是否是2的N次方
- 判断一个数是否是2的n次方
- 判断一个数是否是2的N次方
- 使用位运算判断一个数是否为2的N次方
- 第一个C语言程序
- JavaScript 实现延迟合并处理任务
- Android开发之滑动效果+页面分支跳转
- FZU 2206 函数求解(找规律)
- 小小程序员的忧伤
- 判断一个数是否为2的n的次方数,六种方法
- 常见磁盘类型 SATA,SAS,FC,SSD
- Enum使用方法
- Web框架 - Flask
- Android中Handler使用总结
- 10029---omcat8 访问 Host Manager时,role(角色)的授予
- ifconfig命令来看网卡的IP
- 解决不定宽网页元素居中
- golang项目邮件发送模块代码分享