当前位置: 代码迷 >> Java相关 >> 二进制转十进制的思路------------------------>大家请进
  详细解决方案

二进制转十进制的思路------------------------>大家请进

热度:254   发布时间:2009-08-30 17:32:04.0
二进制转十进制的思路------------------------>大家请进
大家能提供下二进制转十进制的思路吗?
个人点子有限麻烦大家了。
package exercises;
import java.util.Scanner;

public class Ary_Conversion {
    /**
     * 实现十进制转二进制 八进制 十六进制
     * @param args
     */
    public static void main(String[] args) {
        int i;
        Scanner input=new Scanner(System.in);
        System.out.println("\t \t 欢迎进入十进制转二进制系统\n");
        System.out.println("请输入数字:");
        int num=input.nextInt();
        int[] x=new int[100];
         for( i=0;i<99;i++){
          x[i]=num%2;
          num=num/2;
          if(num<1){
              break;
          }
     }
         for(int y=i;y>=0;y--){
                System.out.print(x[y]);
              }
        }
}
搜索更多相关的解决方案: 二进制  十进制  思路  

----------------解决方案--------------------------------------------------------
回复 楼主 gameohyes
用一个堆栈
import java.util.*;
public class Conversion{
   public static void con(int num){
       List<Integer> stack=new ArrayList<Integer>();     
       while(num!=0){
           stack.add(Integer.valueOf(num%2)); //压栈
           num=num/2;
       }
       for(int i=stack.size()-1;i>=0;i--){
          System.out.println(stack.get(i));
       }
   }
}
本帖最近评分记录
  • gameohyes 积分 +5 热心的朋友。辛苦了 2009-8-31 09:02

java群
62635216
欢迎加入
2009-08-30 13:18:18
michael_cc

等 级:论坛游侠
帖 子:25
专家分:105
注 册:2009-8-24
  得分:0 
学到新知识了。
----------------解决方案--------------------------------------------------------
以下是引用pywepe在2009-8-30 21:18的发言:
用一个堆栈
import java.util.*;
public class Conversion{
   public static void con(int num){
       List<Integer> stack=new ArrayList<Integer>();   
       while(num!=0){
           stack.add(Integer ...
朋友能解释下吗?麻烦了。
   这知识我还没学到那去
----------------解决方案--------------------------------------------------------
对了是二进制转十进制啊。
    别弄成十进制转二进制咯。
----------------解决方案--------------------------------------------------------
回复 4楼 gameohyes
其实这就是堆栈的一个简单应用
例如 9
要是笔算的话 是 9/2=4余1 把这个1保留下来  这就是压栈 以此类推
直到 2/2=1余0
接着从下往上的顺序 就是1001  这就是出栈

----------------解决方案--------------------------------------------------------
LZ的标题有问题啊!
一般数据结构书上都会讲到这种压栈的方法,不过对于十进制转换成二进制这也是最低级的方法。好点的做法就是移位,每次移移位,int共移32位,long共移64位,取出取出每次移除的那一位就可以了
不过java封装的很好,Integer.toBinaryString(100);也就搞定了

toBinaryString就是采用移位做的,LZ可以去看看源码
转成16进制有toHexString
转成8进制有toOctalString
LZ可以去看看他们的源码,他们在java.long.Integer和java.lang.Long类里都有,属于static方法

本帖最近评分记录
  • gameohyes 积分 +5 版主讲的好深奥哦 继续学习 2009-8-31 09:03

[url=http://shop63425653.taobao.com/][/url]
2009-08-31 00:45:20
freish

等 级:贵宾
威 望:23
帖 子:1223
专家分:437
注 册:2007-6-1
  得分:0 
程序代码:

public class ToBin {
public static String toBinString1(int i) {
  return Integer.toBinaryString(i);
}
public static String toBinString2(int i) {
  //int 型是4个字节,32位,也就是说左移32次,每次移1位
  StringBuilder builder = new StringBuilder();
  int count = 32;
  while(count-- > 0) {
   builder.append((i & 1) == 1 ? "1":"0");
   i = i>>1;
  }
  return builder.reverse().toString();
}
public static void main(String[] args) {
  System.out.println(toBinString1(100));
  System.out.println(toBinString2(100));
}
}


----------------解决方案--------------------------------------------------------
感谢版主 提供了关键字  toBinaryString
感谢pywepe朋友的热心帮助 。
大家辛苦了

----------------解决方案--------------------------------------------------------
回复 7楼 freish
老大不愧是老大
----------------解决方案--------------------------------------------------------
  相关解决方案