求任意输入一个10进制的数,转换成为2进制的数。 10进制的数为Int 型,二进制 4个字节 共32位。  求大虾给我提供下思路,谢谢了!! 我新手实在做不出来。 

解决方案 »

  1.   

    Integer.toBinaryString(int i)
    把10进制转进去返回的就是了
      

  2.   

    public static String padLeft(String numberString, int n) {
          int number = Integer.parseInt(numberString, 16);
          return String.format("%0" + n + "x", number);
       } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
        BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br1.readLine());
        String ret = Integer.toBinaryString(n);
        ret = padLeft("0", 32 - ret.length()) + ret;
    System.out.println(ret);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
      

  3.   

    要求不调用函数 用简单的Java语句 编写出来 ,请帖代码 然后拿分
      

  4.   


    import java.util.Scanner;
    import java.util.Stack;
    public class Binary {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入一个正整数:");
    int num = input.nextInt();
    if(num < 0) {
    System.out.println("请输入一个正整数!");
    return;
    }
    System.out.println(toBinary(num));
    }

    /**
     * 利用栈实现将一个10进制数转换为2进制数
     * @param num 待转换的正整数
     * @return num的二进制表示形式
     */
    public static String toBinary(int num) {
    Stack<Integer> stack = new Stack<Integer>();
    StringBuffer sb = new StringBuffer();

    if(num == 0) {
    stack.add(0);
    }

    //余数入栈
    while(num != 0) {
    stack.add(num % 2);
    num = num / 2;
    }

    //出栈,得到结果序列,存入StringBuffer
    while(!stack.isEmpty()) {
    sb.append(stack.pop());
    }
    return sb.toString();
    }
    }上面的是我做的一个简单是实现,楼主可以参考参考!
      

  5.   


    public class test{
      StringBuffer buff=new StringBuffer();
      int num=23478;
      public test(){
        while(num>0){
          int i=num%2;
          num/=2;
          buff.append(i+"");
        }
        System.out.println(buff.reverse()+"");
      }
      public static void main(String args[]) {
        new test ();
      }
    }
      

  6.   

    public static void main(String[] args) {
        int i = 23478;
        int[] binary = new int[32];
        int j = 0;
        while (i > 0) {
            binary[j++] = i & 1;
            i >>>= 1;
        }
        for (j = 31; j >= 0; j--) {
            System.out.print(binary[j]);
        }
        System.out.println();
    }00000000000000000101101110110110
      

  7.   


    public class HexConversion {

    public HexConversion(int num){  //带参数的构造方法,当new一个带参数的对象时自动执行这个构造方法

    int[] array = new int[32];   //存储二进制的四个字节,三十二位,数组的每一位都会初始化为零

    for(int i = 31 ; num > 0 ; i --){    //利用进制转换的方法,从数组的后面开始,把余数放到数组里面
    array[i] = num % 2 ;
    num /= 2 ;
    }
    for(int i = 0 ; i < array.length ; i ++){   //打印数组
    if(i % 8 == 0 && i > 0){  //每八位用一个空格隔开
    System.out.print(" ");
    }
    System.out.print(array[i]+"");
    }
    }

    public static void main (String args[]){
    int num = 10;
    new HexConversion(num);
    }
    }
      

  8.   


    import java.util.Scanner;
    public class Test07 {
    public static void main(String[] args) {
    int a;
    Scanner r = new Scanner(System.in);
    System.out.println("请输入一个整数");
    a = r.nextInt();
    String s = "";
    do {
    int i = a & 1;
    a >>>= 1;
    s = i + s; // 此处不能写成 s=s+i
    } while (a != 0);
    System.out.println("对应的二进制是:" + s);
    }
    }
      

  9.   


    public class Test {
    public static int[] intToBin(int num) {
    int[] bin = new int[32];
    int k = 0;
    if(num >= 0) { //正数状态
    while(num != 0) {
    bin[k++] = num % 2;
    num /= 2;
    }
    while(k < 32) 
    bin[k++] = 0;
    } else { //负数状态
    num = - num;
    //求负数的源码
    while(num != 0) {
    bin[k++] = num % 2;
    num /= 2;
    }
    while(k < 31) 
    bin[k++] = 0;

    //对源码按位取反
    for(k = 0; k < 31; k++)
    if(bin[k] == 1)
    bin[k] = 0;
    else
    bin[k] = 1;

    //解析成内存中的样子
    for(k = 0; k < 31; )
    if(bin[k] + 1 == 2) {
    bin[k] = 0;
    if(bin[k + 1] == 0) {
    bin[k] = 1;
    break;
    } else
    k++;
    } else {
    bin[k] = 1;
    break;
    }
    bin[31] = 1;
    }
    return bin;
    }
    public static void main(String[] args) {
    int[] toBin;
    toBin = intToBin(1);
    for(int i = 31; i>= 0; i--)
    System.out.print(toBin[i] + " ");
    }
    }
    toBin(1)
    得到0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
    toBin(-1)
    得到1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 其实我就是模拟的就求二进制数学表达
      

  10.   

    也凑个热闹:void printBinary(int x){
        int mask = 0x80000000;
        for(int i=0;i<32;i++){
            system.out.println( (x&mask)==0?'0':'1');
            mask >>> 1;
        }
    }
      

  11.   


    /**
     * 方法一
     */
    String converteTOBinary(int source){

    String targetStr = Integer.toBinaryString(source);

    while(targetStr.length() < 32){
    targetStr = "0" + targetStr;
    }

    return targetStr;
    }/**
     * 方法二
     */
    String converteTOBinary(int source){

    String targetStr = Integer.toBinaryString(source);

    return ("00000000000000000000000000000000" + targetStr).substring(targetStr.length());
    }
    《巨和_连金亮_JAVA视频(J2SE),从入门到精通【压缩高清独立光纤下载完整版】》的提供了光线下载,有需求的朋友可以去 http://www.verycd.com/topics/2839540/ 下载。