十进制数转二进制形式并判断它是否为2的n次幂(Java实现)
2015-04-26 22:33
489 查看
java提供了十进制转化为二进制、十六进制、八进制的函数;在java.lang.Integer这个API包中,转换函数如下
这3个函数都可以将十进制的整数转换成二、一六、八进制数,不过转换后的结果都是字符串的形式。 在这里介绍下转换为二进制的情况。
查看Integer这个类的源码发现,java.lang.Integer这个类中,有一个方法叫public static String toBinaryString(int paramInt) ;它可以轻松实现十进制转为二进制形式。详细代码片段如下:
如果想要将一个十进制数转换成二进制数,测试代码如下:
如果想要进一步判断一个十进制数是不是2的n次幂,分析它的二进制可以看出,一个数是2的n次幂,它的二进制数的除第一个为1外,其余全为零。
测试代码:
结果:false
public static String toBinaryString(int i) public static String toHexString(int i) public static String toOctalString(int i)
这3个函数都可以将十进制的整数转换成二、一六、八进制数,不过转换后的结果都是字符串的形式。 在这里介绍下转换为二进制的情况。
查看Integer这个类的源码发现,java.lang.Integer这个类中,有一个方法叫public static String toBinaryString(int paramInt) ;它可以轻松实现十进制转为二进制形式。详细代码片段如下:
public static String toBinaryString(int paramInt) { return toUnsignedString(paramInt, 1); }其中的toUnsignedString方法如下:
private static String toUnsignedString(int paramInt1, int paramInt2) { char[] arrayOfChar = new char[32]; int i = 32; int j = 1 << paramInt2; int k = j - 1; do { arrayOfChar[(--i)] = digits[(paramInt1 & k)]; paramInt1 >>>= paramInt2; } while (paramInt1 != 0); return new String(arrayOfChar, i, 32 - i); }其中digits为一个static静态数据块,java.lang.Integer类在前面定义了一个final型的digits变量
static final char[] digits;它的初始化为下列值:
static { digits = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; }
如果想要将一个十进制数转换成二进制数,测试代码如下:
public static void main(String[] args) { Integer i = 8; String str = i.toBinaryString(i); System.out.println(str); }输出结果为:1000
如果想要进一步判断一个十进制数是不是2的n次幂,分析它的二进制可以看出,一个数是2的n次幂,它的二进制数的除第一个为1外,其余全为零。
测试代码:
public static void main(String[] args) { Integer i = 16; String str = i.toBinaryString(i); System.out.println(is2N(str)); } public static boolean is2N(String num){ boolean flag = false; int size = num.length(); int i =0; while(i<size){ if((i==0&&num.charAt(i)=='1')||(i>0&&num.charAt(i)=='0')){ flag = true; }else{ flag = false; break; } i++; } return flag; }
结果:false
相关文章推荐
- 判断一个无符号数是否是2的n次幂形式的数
- java中判断一个对象是否实现了某个接口
- java中判断一个对象是否实现了某个接口
- java实现判断两主机是否相连!
- 判断一无符号整数的二进制形式中是否包含偶数个1
- android、Java下判断两个String是否相等 、EditText输入是否为空,限定输入数字的实现 总结
- java中判断一个对象是否实现了某个接口 2011-05-06 16:48:52
- android、Java下判断两个String是否相等 、EditText输入是否为空,限定输入数字的实现
- java实现的判断括号是否成对的代码,()[]{}都可以
- 在纯java中实现跨平台判断该进程是否已经启动
- 判断一无符号整数的二进制形式中是否包含偶数个1
- x&(x-1)的巧用:用于判断x是否为2的n次幂,计算二进制1的个数
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- 判断一个数的二进制形式是否只有一个1,是的话就输出
- 判断无符号整数的二进制形式中是否包含偶数个1
- 判断是否为2的幂||输出一个整数二进制格式中1的个数 非循环非递归实现
- 判断文件类型是否为图片的方法——Java实现
- x&(x-1)的巧用:用于判断x是否为2的n次幂,计算二进制1的个数
- 巧用x&(x-1):判断二进制1的个数&判断是否是2的N次幂
- android、Java下判断两个String是否相等 、EditText输入是否为空,限定输入数字的实现 总结