日期:2014-05-20  浏览次数:20653 次

请教:java中显示二进制的问题
在java中如何把整数或浮点数据用二进制的形式显示出来
有没有相关的方法?


------解决方案--------------------
Integer.toBinaryString(int i);
Double.doubleToRawLongBits(double value)
------解决方案--------------------
Double.toHexString(double d);
然后再自己解析成二进制吧
------解决方案--------------------
十六进制转换成十进制:Integer.valueOf( "FFFF ",16).toString()

------解决方案--------------------
public static void bin(byte b) {
char[] charBits = toCharBits(b, 8);
outputWholeBits(charBits);
}

public static void bin(char b) {
char[] charBits = toCharBits(b, 16);
outputWholeBits(charBits);
}

public static void bin(short b) {
char[] charBits = toCharBits(b, 16);
outputWholeBits(charBits);
}

public static void bin(int b) {
char[] charBits = toCharBits(b, 32);
outputWholeBits(charBits);
}

public static void bin(long b) {
char[] charBits = toCharBits(b, 64);
outputWholeBits(charBits);
}

public static void bin(float a) {
char[] charBits = toCharBits(Float.floatToIntBits(a), 32);
outputFloatBits(charBits);
}

public static void bin(double a) {
char[] charBits = toCharBits(Double.doubleToLongBits(a), 64);
outputDoubleBits(charBits);
}

//转二进制数组
static char[] toCharBits(long num, int size) {
char[] charBits = new char[size];
for (int i = size-1; i > = 0; --i) {
charBits[i] = (num & 1) == 0 ? '0 ' : '1 ';
num > > > = 1;
}
return charBits;
}

//整数打印,4位一逗号
static void outputWholeBits(char[] charBits){
for(int i = 0; i < charBits.length; i++){
System.out.print(charBits[i]);
if((i % 4 == 3)&&(i != charBits.length-1)) {
System.out.print( ", ");
}
}
System.out.println();
}

//float打印(符号位1, 指数位8, 尾数位23)
static void outputFloatBits(char[] charBits){
for(int i = 0; i < charBits.length; i++){
System.out.print(charBits[i]);
if((i == 0)||(i == 8)) {
System.out.print( " ");
}
}
System.out.println();
}

//double打印(符号位1, 指数位11, 尾数位52)
static void outputDoubleBits(char[] charBits){
for(int i = 0; i < charBits.length; i++){
System.out.print(charBits[i]);
if((i == 0)||(i == 11)) {
System.out.print( " ");
}
}
System.out.println();
}