这个....数存机器里本身就是二进制的 如果你是想把这个二进制打印出来,方法如下: /** * Display the binary form of primitive byte * Every four-bit has a ',' */ public static void bin(byte b) { char[] charBits = toCharBits(b, 8); outputWholeBits(charBits); }
/** * Display the binary form of primitive char * primitive char is Unicode and takes 16-bit pre-char * Every four-bit has a ',' */ public static void bin(char b) { char[] charBits = toCharBits(b, 16); outputWholeBits(charBits); }
/** * Display the binary form of primitive short * Every four-bit has a ',' */ public static void bin(short b) { char[] charBits = toCharBits(b, 16); outputWholeBits(charBits); }
/** * Display the binary form of primitive int * Every four-bit has a ',' */ public static void bin(int b) { char[] charBits = toCharBits(b, 32); outputWholeBits(charBits); }
/** * Display the binary form of primitive long * Every four-bit has a ',' * Notice the literal "1L", not "1" */ public static void bin(long b) { char[] charBits = toCharBits(b, 64); outputWholeBits(charBits); }
/** * Display the binary form of primitive float */ 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; }
楼上的写的好多啊,看我这个可能简单点: import java.util.*; public class TenToTwo { static StringBuffer result = new StringBuffer(); public static void main(String[] args) { int m; System.out.print("输入一个十进制数:"); Scanner s = new Scanner(System.in); m = s.nextInt(); transfer(m); result.reverse(); System.out.println(result); }
public static void transfer(int m) { if(m == 0) return; else if(m % 2 == 1) result.append('1'); else result.append('0'); m = m / 2; transfer(m); }
}
why no use toBinaryString?public class ToBinary { public static void main(String[] args) { try { String s; int n = 0; while (true) { BufferedReader br = new BufferedReader(System.in); System.out.print("input a decimal/or [E] to exit:"); s = br.readLine(); if (s!=null && "E".equals(s)) { System.out.println("bye..."); break; } try { n = Integer.paseInt(s); } catch (NumberFormatException ex) { System.out.println(s " is an illegal decimal, try again."); continue; } System.out.println(Integer.toBinaryString(n)); } } catch (Throwable e) { e.printStackTrace(); } }
如果你是想把这个二进制打印出来,方法如下: /**
* Display the binary form of primitive byte
* Every four-bit has a ','
*/
public static void bin(byte b) {
char[] charBits = toCharBits(b, 8);
outputWholeBits(charBits);
}
/**
* Display the binary form of primitive char
* primitive char is Unicode and takes 16-bit pre-char
* Every four-bit has a ','
*/
public static void bin(char b) {
char[] charBits = toCharBits(b, 16);
outputWholeBits(charBits);
}
/**
* Display the binary form of primitive short
* Every four-bit has a ','
*/
public static void bin(short b) {
char[] charBits = toCharBits(b, 16);
outputWholeBits(charBits);
}
/**
* Display the binary form of primitive int
* Every four-bit has a ','
*/
public static void bin(int b) {
char[] charBits = toCharBits(b, 32);
outputWholeBits(charBits);
}
/**
* Display the binary form of primitive long
* Every four-bit has a ','
* Notice the literal "1L", not "1"
*/
public static void bin(long b) {
char[] charBits = toCharBits(b, 64);
outputWholeBits(charBits);
}
/**
* Display the binary form of primitive float
*/
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;
}
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();
}
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();
}
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();
}
import java.util.*;
public class TenToTwo
{
static StringBuffer result = new StringBuffer();
public static void main(String[] args)
{
int m;
System.out.print("输入一个十进制数:");
Scanner s = new Scanner(System.in);
m = s.nextInt();
transfer(m);
result.reverse();
System.out.println(result);
}
public static void transfer(int m)
{
if(m == 0)
return;
else if(m % 2 == 1)
result.append('1');
else
result.append('0');
m = m / 2;
transfer(m);
}
}
public static void main(String[] args) {
try {
String s;
int n = 0;
while (true) {
BufferedReader br = new BufferedReader(System.in);
System.out.print("input a decimal/or [E] to exit:");
s = br.readLine();
if (s!=null && "E".equals(s)) {
System.out.println("bye...");
break;
}
try {
n = Integer.paseInt(s);
} catch (NumberFormatException ex) {
System.out.println(s " is an illegal decimal, try again.");
continue;
} System.out.println(Integer.toBinaryString(n));
}
} catch (Throwable e) {
e.printStackTrace();
}
}
}
把上面的n改成double类型,Integer.paseInt改成Double.paseDouble;仅供参考
请各位DEBUG一下啊
还有要能做小数和负数啊