精华内容
下载资源
问答
  • 用递归算法求一个int的二进制字符串;思路是:递归最简单情况(递归出口)是0和1;其余是先调用递归算出n/2的二进制字符串,然后加上n时位数(n % 2)。import java.util.Scanner;public class WriteBinary {public ...

    用递归算法求一个int的二进制字符串;

    思路是:递归最简单情况(递归出口)是0和1;其余的是先调用递归算出n/2的二进制字符串,然后加上n时的位数(n % 2)。

    import java.util.Scanner;

    public class WriteBinary {

    public static String writeBinary(int n){

    String binary = "";

    if(n < 0)

    throw new IllegalArgumentException();

    if(n <= 1){

    binary = binary + String.valueOf(n);

    return binary;

    }

    else{

    binary = writeBinary(n/2);

    binary = binary + String.valueOf(n % 2);

    }

    return binary;

    }

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    System.out.print("Please input a num : ");

    Scanner scan = new Scanner(System.in);

    int input = scan.nextInt();

    String binary = WriteBinary.writeBinary(input);

    System.out.println(input + " binary String is " + binary);

    }

    }

    展开全文
  • Java十进制转二进制,递归算法

    千次阅读 2016-04-03 15:13:47
    //用递归算法求一个int的二进制字符串;//思路是:递归最简单情况(递归出口)是0和1;其余是先调用递归算出n/2的二进制字符串,然后加上n时位数(n % 2);import java.util.Scanner; public class WriteBinary ...

    用递归算法求一个int的二进制字符串;

    思路是:递归最简单情况(递归出口)是0和1;其余的是先调用递归算出n/2的二进制字符串,然后加上n时的位数(n % 2)。


    import java.util.Scanner;
    
    public class WriteBinary {
    	public static String writeBinary(int n){
    		String binary = "";
    		if(n < 0)
    			throw new IllegalArgumentException();
    		if(n <= 1){
    			binary = binary + String.valueOf(n);
    			return binary;
    		}
    		else{
    			binary = writeBinary(n/2);
    			binary = binary + String.valueOf(n % 2);
    		}
    		return binary;
    	}
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.print("Please input a num : ");
    		Scanner scan = new Scanner(System.in);
    		int input = scan.nextInt();
    		String binary = WriteBinary.writeBinary(input);
    		System.out.println(input + " binary String is " + binary);
    	}
    }


    展开全文
  • 十进制转二进制

    2009-11-03 16:51:00
    一、最简单的方法: intvalue=9;stringoutString=Convert.ToString(9,2); ,简单算法实现: CodepublicstaticstringToBinaryString(intvalue){stringoutString=string.Empty;...

    一、最简单的方法:

    int value=9;
    string outString=Convert.ToString(9,2);

     

    二,简单算法实现:

     

    ContractedBlock.gifExpandedBlockStart.gifCode
    public static string ToBinaryString(int value)
            {           
                
    string outString = string.Empty;
                
    while (value > 0)
                {
                    
    if (value % 2 == 0)
                    {
                        value 
    = value / 2;
                        outString 
    += "0";
                    }
    //end if
                    else
                    {
                        value 
    = value / 2;
                        outString 
    += "1";
                        
                    }
    //end else
                }//end while

                
    string reverse = String.Empty;//逆转字符串
                for (int i = outString.Length - 1; i > -1; i--)
                {
                    reverse 
    += outString[i];
                }

                
    return reverse;
            }

     

    转载于:https://www.cnblogs.com/batv2009/archive/2009/11/03/1595360.html

    展开全文
  • 进制转换算法

    2018-02-02 00:43:38
     十进制二进制  方法:除2取余法,即每次将整数部分除以2,余数为该位权上数,而商继续除以2,余数又为上一个位权上数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到...

     第一篇博客就写个进制转换的总结吧。简单、轻松、愉快地开始博客之旅大笑

     一般常用进制为二、八、十、十六。那么我们先开始讨论这四种进制之间的相互转化。

    1.十进制转化为二、八、十六进制。

     十进制→二进制

     方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。 

    #include<iostream>
    using namespace std;
    int main(){
    	int a,n,i=0;
    	int b[100];
    	cin>>n;
    	do{
    		a=n%2;
    		b[i++]=a;
    		n=n/2;
    	}while(n!=0);
    	for(int j=i-1;j>=0;j--){
    		cout<<b[j];
    	} 
    	cout<<endl;
    	return 0;
    }

      十进制→八进制同理,除8取余法,只需将上面代码中的2改为8即可。

    十进制→十六进制同理,除16取余法,改动稍多一点点而已,还是贴上代码吧。

    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
    	int a,n,i=0;
    	char b[100],c[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    	cin>>n;
    	do{
    		a=n%16;
    		b[i++]=c[a];
    		n=n/16;
    	}while(n!=0);
    	for(int j=i-1;j>=0;j--){
    		cout<<b[j];
    	} 
    	cout<<endl;
    	return 0;
    }

    2.二、八、十六进制转化为十进制。

      二进制→十进制

     方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

    #include<iostream>   
    #include<string.h> 
    #include<math.h> 
    using namespace std; 
    int main() {     
        char a[20],b[10]; 
        unsigned long c=0;
    	int i=0,j;  
        scanf("%s",&a);     
        j=strlen(a);   
        for(i=0;i<j;i++){  
            b[i]=a[i]-'0';  
            c=c+b[i]*pow(2,j-i-1);  
        }  
        printf("%u",c);  
        return 0;  
    }

     八进制→十进制同理,仅需把2更改为8即可。
     十六进制→十进制代码如下。
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    int main() {
    	int a[20]; 
    	char b[10]; 
    	unsigned long c=0;
    	int i=0,j;
    	scanf("%s",&b);   
    	j=strlen(b); 
    	for(i=0;i<j;i++){
    		if(b[i]>='0'&&b[i]<='9')
    		a[i]=b[i]-'0';
    		if(b[i]>='A'&&b[i]<='F')
    		a[i]=b[i]-'A'+10;
    		if(b[i]>='a'&&b[i]<='f')
    		a[i]=b[i]-'a'+10;
    		c=c+a[i]*pow(16,j-i-1);
    	}
    	printf("%u",c);
    	return 0;
    }
    3.二进制转化为八、十六进制。
     二进制→八进制
     方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

    #include<iostream>
    #include<math.h>
    #include<string.h>
    using namespace std;
    int main() {
    	string a;
    	int i,j,b[10];
    	cin>>a;
    	j=0;
    	//修正位数 
    	if(a.length()%3==1)a="00"+a;
    	if(a.length()%3==2)a="0"+a;
    	//二进制转八进制
    	for(i=0;i<a.length();i+=3){
    		b[j]=(a[i]-'0')*4+(a[i+1]-'0')*2+(a[i+2]-'0');
    		++j;
    	}
    	for(i=0;i<j;i++){
    		cout<<b[i];
    	}
    	cout<<endl;
    	return 0;
    }

     二进制→十六进制

     方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,
    小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,
    可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

    #include<iostream>
    #include<cmath>
    #include<cstring>
    using namespace std;
    int main() {
    	string a,str;
    	int i,j,b[10];
    	char c[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    	cin>>a;
    	j=0;
    	//修正位数 
    	if(a.length()%4==1)a="000"+a;
    	if(a.length()%4==2)a="00"+a;
    	if(a.length()%4==3)a="0"+a;
    	//二进制转十六进制
    	for(i=0;i<a.length();i+=4){
    		b[j]=(a[i]-'0')*8+(a[i+1]-'0')*4+(a[i+2]-'0')*2+(a[i+3]-'0');
    		str[j]=c[b[j]];
    		++j;
    	}
    	for(i=0;i<j;i++){
    		cout<<str[i];
    	}
    	cout<<endl;
    	return 0;
    }
    4.八、十六进制转二进制
     八进制→二进制

     方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数。

    #include<iostream>
    #include<math.h>
    #include<string.h>
    using namespace std;
    int main() {
    	string a;
    	int i,j,b[20];
    	cin>>a;
    	j=0;
    	for(i=0;i<a.length();i++){
    		b[j]=(a[i]-'0')/4;
    		b[j+1]=(a[i]-'0')%4/2;
    		b[j+2]=(a[i]-'0')%2;
    		j=j+3;
    	}
    	for(i=0;i<j;i++){
    		if(i==0&&b[i]==0) continue;
    		if(b[0]==0&&i==1&&b[i]==0) continue;
    		cout<<b[i];
    	}
    	cout<<endl;
    	return 0;
    }
    十六进制→二进制

     方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数。

    #include<iostream>
    #include<math.h>
    #include<string.h>
    using namespace std;
    int main() {
    	string a;
    	int i,j,b[20];
    	cin>>a;
    	j=0;
    	for(i=0;i<a.length();i++){
    		if(a[i]>='0'&&a[i]<='9'){
    		b[j]=(a[i]-'0')/8;
    		b[j+1]=(a[i]-'0')%8/4;
    		b[j+2]=(a[i]-'0')%4/2;
    		b[j+3]=(a[i]-'0')%2;
    		j=j+4;}
    		if(a[i]>='A'&&a[i]<='F'){
    		b[j]=(a[i]-'A'+10)/8;
    		b[j+1]=(a[i]-'A'+10)%8/4;
    		b[j+2]=(a[i]-'A'+10)%4/2;
    		b[j+3]=(a[i]-'A'+10)%2;
    		j=j+4;}
    	}
    	for(i=0;i<j;i++){
    		if(i==0&&b[i]==0) continue;
    		if(b[0]==0&&i==1&&b[i]==0) continue;
    		if(b[0]==0&&b[1]==0&&i==2&&b[i]==0) continue;
    		cout<<b[i];
    	}
    	cout<<endl;
    	return 0;
    }

    5.八进制与十六进制互转

    进制→十六进制

     方法:将八进制转换为二进制,然后再将二进制转换为十六进制。

    #include <iostream>
    #include <string>
    using namespace std;
    int arr[10000001];
     
    int main()
    {
        int n,len_str,i,j;
        string str,str2,str3="0123456789ABCDEF";
        cin>>str;
        len_str=str.length();
        str2="";
        // 八进制转换为二进制
        for(i=0;i<len_str;++i)
        {
            switch(str[i])
            {
            case '0':str2+="000";break;
            case '1':str2+="001";break;
            case '2':str2+="010";break;
            case '3':str2+="011";break;
            case '4':str2+="100";break;
            case '5':str2+="101";break;
            case '6':str2+="110";break;
            case '7':str2+="111";break;
            default:break;
            }
        }  
        // 修正位数
        if(len_str%4==1)    str2="000"+str2;
        else if(len_str%4==2)  str2="00"+str2; 
        else if(len_str%4==1)  str2="0"+str2; 
        len_str=str2.length();
        // 二进制转换十六进制
        j=0;
            for(i=0;i<len_str;i+=4){
            arr[j]=(str2[i]-'0')*8+(str2[i+1]-'0')*4+(str2[i+2]-'0')*2+(str2[i+3]-'0');
        	++j;
        }
        for(i=0;i<j;++i){
            if(i==0 && arr[i]==0) continue;
            cout<<str3[arr[i]];
       }
        cout<<endl;
        return 0;
    }


     十六进制→八进制

     方法:同理,将十六进制转换为二进制,然后再将二进制转换为进制。

    #include <iostream>
    #include <string>
    using namespace std;
    int arr[10000001];
     
    int main()
    {
        int n,len_str,i,j;
        string str,str2;
        cin>>str;
        len_str=str.length();
        str2="";
        // 十六进制转换为二进制
        for(i=0;i<len_str;++i)
        {
            switch(str[i])
            {
            case '0':str2+="0000";break;
            case '1':str2+="0001";break;
            case '2':str2+="0010";break;
            case '3':str2+="0011";break;
            case '4':str2+="0100";break;
            case '5':str2+="0101";break;
            case '6':str2+="0110";break;
            case '7':str2+="0111";break;
            case '8':str2+="1000";break;
            case '9':str2+="1001";break;
            case 'A':str2+="1010";break;
            case 'B':str2+="1011";break;
            case 'C':str2+="1100";break;
            case 'D':str2+="1101";break;
            case 'E':str2+="1110";break;
            case 'F':str2+="1111";break;
            default:break;
            }
        }  
        // 修正位数
        if(len_str%3==1)    str2="00"+str2;
        else if(len_str%3==2)  str2="0"+str2; 
        len_str=str2.length();
        // 二进制转换八进制
        j=0;
            for(i=0;i<len_str;i+=3){
            arr[j]=(str2[i]-'0')*4+(str2[i+1]-'0')*2+(str2[i+2]-'0');
        	++j;
        }
        for(i=0;i<j;++i){
            if(i==0 && arr[i]==0) continue;
            cout<<arr[i];
       }
        cout<<endl;
        return 0;
    }
    展开全文
  • 已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字 十进制值 。 示例 1: 输入:head = [1,0,1] 输出:5 解释:二进制数 (101) 转化为十进制数 (5) 示例 2: 输入:head = [0] 输出:0 ...
  • 暂时不会用递归算法,先用最简单的方法试试看,期待他可以运行的程度。 #include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;lt;cmath&amp;amp;amp;amp
  • java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下:首先关于最简单的二进制转换的方法有:十进制转成...
  • java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下:首先关于最简单的二进制转换的方法有:十进制转成...
  •  先说说对于我们来说最简单的 , 我们从小到大接触的算法都是十进制 ,那什么叫十进制呢? 十进制数是组成以10为基础的数字系统,有0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成。 也就是我们现在所学的 ...
  • 十进制转换成二进制的算法如下:1。给定一个数;2。根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r...
  • java中对于进制的转换有很多方式,...首先关于最简单的二进制转换的方法有: 十进制转成十六进制: String Integer.toHexString(int i) 十进制转成八进制 String Integer.toOctalString(int i) 十进制转二进制 ...
  • java中对于进制的转换有很多方式,其中对于常见的基本的... 首先关于最简单的二进制转换的方法有: 十进制转成十六进制: String Integer.toHexString(int i) 十进制转成八进制 String Integer.toOctalString(int
  • 首先将二进制数值(32定点数,末16位代表小数)由PC写入串口小助手,传给FPGA,再将转化后结果由串口传到PC端显示,整体过程比较简单,这部分以后再讲,今天主要来讲讲小数部分进制转十进制。  首先关于...
  • 本来想着昨晚的,但一看时间已经这么晚了,就先把相对最简单的一题做了。 输入:一个代表十六进制数的字符串 输出:对应的十进制数字 大概是大一的时候就做过这题,感觉纯粹是考ASCII码的记忆和进制转换算法.........
  • 万年历的算法 .txt 乘方函数桃子猴.txt 乘法矩阵.txt 二分查找1.txt 二分查找2.txt 二叉排序树.txt 二叉树.txt 二叉树实例.txt 二进制数.txt 二进制数2.txt 余弦曲线.txt 余弦直线.txt 傻瓜递归.txt ...
  • n&(n-1)的妙用 () 今天无聊拿起《编程之美》看了下,...n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子: n = 10100(二进制),则(n-1) = 10011 ==》n&(n-1) = 10000 可以看到原本
  • Java中字符串转换

    2017-01-19 12:11:03
     java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行... 首先关于最简单的二进制转换的方法有: 十进制转成十六
  • 【题目描述】 ...先异或得到是int类型的十进制数,但是其实按位对比过程中,计算机也是将两个数转换成二进制之后才可以比较,比较完毕再变成十进制的整数返回回来。 x^y ->int类型 复制代...
  • 之前写过一篇关于倒位序号的算法,实现简单,但是算法不易理解。再写一个容易理解,但是感觉很low的。。。。 首先解释一下倒位序号。。 倒位序号就是指将数n的二进制码的位序颠倒后的数n^,比如说n=6,6的二进制数为...
  • 4 设菲尔德大学MATLAB遗传算法工具箱(王辉) Matlab 遗传算法(Genetic Algorithm)优化工具箱是基于基本操作及终止条件、二进制十进制相互转换等操作综合函数库。其实现步骤包括:通过输入及输出函数求出遗传...
  • 2.12 循环不变量:将十进制数转换为二进制数 2.13 常见错误 2.14 小结 第3章 算法分析 3.1 引言 3.2 符号O 3.3 时间与空间复杂度 3.4 求和 3.5 递推关系 3.5.1 巧妙地猜测 3.5.2 分治关系 3.5.3 涉及...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 157
精华内容 62
关键字:

十进制转二进制最简单的算法