精华内容
下载资源
问答
  • 十进制转换成二进制算法如下:1.给定一个数;2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1...

    将十进制转换成二进制的算法如下:

    1.给定一个数;

    2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。

    3.然后把r的值送到一个数组里面。最后把这个数组里面的内容从后面打印出来就可以了。

    import java.util.Scanner;

    public class ZhuanHuan {

    public static void main(String[] args){

    System.out.println("请输入一个十进制数:");

    Scanner reader = new Scanner(System.in);

    int n=0;

    int i=0;

    int r=0;

    n=reader.nextInt();

    int[] a =new int[10];

    do{

    if(n%2==1){

    r=1;

    }

    else {

    r=0;

    }

    a[i]=r;

    n=n/2;

    i++;

    }

    while(n>0);

    System.out.println("转化成的二进制是:");

    for (int j = i-1; j>=0; j--) {

    System.out.print(a[j]);

    }

    }

    }

    十进制整数转换为二进制整数采用"除2取余,逆序排列"法

    具体做法是:用2整除十进制整数,可以得到一个商和余数,再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二

    制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    对于数值n,二进制最后一位=n%2;计算得到的结果是最后要输出的结果,使用递归函数,联系递归的特点:在递归语句之前计算n%2,在递归调用语句之后

    输出结果,这样先计算的结果反而在最后输出。

    import java.util.Scanner;

    public class ChangeTo2 {

    /**

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    System.out.println("请输入一个整型的十进制数:");

    Scanner reader = new Scanner(System.in);

    int num = 0;

    num = reader.nextInt();

    System.out.print("转换后的二进制数为:");

    toBinary(num);

    }

    //递归函数

    static void toBinary( int num){

    int r;

    r = num%2;//最后一位要输出的,即使参数=1,还是要计算到这里结束,只取出余数就ok了。然后顺次返回上一级主调函数,继续执行剩下的……

    //如果商 1 / 2 = 0,计算就可以终止了,不需要再算

    if(num>=2){

    //精华,联系10进制转2进制的算法,每次除以2,取出余数,然后用新的商继续除以2,取出新余数……直到商为0,余数逆序输出即可

    toBinary(num/2);//把新的商作为参数递归调用

    }

    //在递归语句之后输出,这样就是倒叙输出

    System.out.print(r);

    }

    }

    展开全文
  • 二进制转换十进制 算法解析

    千次阅读 2021-03-06 16:26:56
    java里面是有进制间互换现成的方法的:public class十进制与各进制的相互转换 {public static voidmain(String[] args){//java已经实现的机制:十进制转换为二进制int decimal = 10;System.out.println("十进制数:"+...

    java里面是有进制间互换现成的方法的:

    public class十进制与各进制的相互转换 {public static voidmain(String[] args){//java已经实现的机制:十进制转换为二进制

    int decimal = 10;

    System.out.println("十进制数:"+decimal+",转换为二进制:"+Integer.toBinaryString(decimal));

    System.out.println("十进制数:"+decimal+",转换为八进制:"+Integer.toOctalString(decimal));

    System.out.println("十进制数:"+decimal+",转换为十六进制:"+Integer.toHexString(decimal));

    System.out.println("二进制数:"+"1010" +",转换为十进制:"+Integer.valueOf("1010", 2));

    System.out.println("八进制数:"+"12" +",转换为十进制:"+Integer.valueOf("12", 8));

    System.out.println("十六进制数:"+"a" +",转换为十进制:"+Integer.valueOf("a", 16));

    }

    }

    结果:

    十进制数:10,转换为二进制:1010十进制数:10,转换为八进制:12十进制数:10,转换为十六进制:a

    二进制数:1010,转换为十进制:10八进制数:12,转换为十进制:10十六进制数:a,转换为十进制:10

    但如果不取Integer的内含方法,我们要怎么实现进制之间的转换呢?

    下面针对二进制-->十进制实现其算法过程:

    一般思维:

    当问到二进制数转为十进制数,大多数人脑里第一反应的应该是这样一个逻辑过程:

    二进制数:1010

    十进制数:1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 =  8 + 0 + 2 +0 = 10

    按这个思路,java代码可以这样实现:

    方法一:

    public intbinaryToDecimal(String inMsg){int x = 0;int mul = 1;for(int i = inMsg.length()-1;i>0;i--){

    x+= mul*(inMsg.charAt(i)=='1'?1:0);

    mul*=2;

    }

    System.out.println(mul);returnmul;

    }

    好奇在网上也找了下其他实现方法:

    方法二:

    String radix = "1010";

    public intmethod(String radix){int x = 0;for(charc:radix.toCharArray())

    x= x*2 + (c=='1'?1:0);

    System.out.println(x);returnx;

    }

    对比以上两个方法,方法一和我们平常的思维是一致的,但是方法二就不大好理解了,略作思考后,发现可以这样理解:

    1、从for(char c:radix.toCharArray())这行代码可以看出,需要将待求解的二进制数转换为char数组;显然,当待求解二进制数为1010时,char数组即为:char[1,0,1,0],数组中有4个元素,那么也就是说for循环要循环运行4次。

    2、显而易见,for循环里面的算式组成部分的(c=='1'?1:0)目的就是为了拿到当前循环时对应二进制数组下标的值。

    如:第一次循环,拿到二进制数组下标为0的值:1

    第二次循环,拿到二进制数组下标为1的值:0

    第三次循环,拿到二进制数组下标为2的值:1

    第四次循环,拿到二进制数组下标为3的值:0

    3、算法:x = x*2 + (c=='1'?1:0) 的原理解析:前半部分x*2,是为了实现二进制数组元素的幂次相乘(之前的int x = 0其实实现了char[]数组的size()-1的作用),后半部分获取了下次进行幂运算的char数组的元素值。

    解析:

    第一次循环:看方法二的第三行代码:int x = 0;x初始值为0,就导致了for循环第一次循环时,运算为:0*2+1  ,即只会得到算式(c=='1'?1:0)的值,即二进制数组第一个元素的值:1 ;这时循环已经进行了1次,还剩3次,所以这里的1会在后面的3次循环里分别乘以2 , 即1*2*2*2;

    第二次循环:算式为: (0*2 + 1)*2 + 0  == 0*2*2 + 1*2 + 0  ,第一部分0*2*2不用管,因为这个是int x=0起作用用的, 第二部分是第一次循环时得到1的第一次幂运算1*2, 第三部分就是二进制数组下标为1的元素:0,也是下一次循环会进行幂运算的数。   这时我们发现总共的4次循环已经进行了2次,剩下2次,所以这里的下次幂运算值:0会在后面的2次循环里分别乘以2,即0*2*2;

    第三次循环:算式为: ((0*2 + 1)*2 + 0)*2 +1  == 0*2*2*2 + 1*2*2 + 0*2 +1  ,第一部分0*2*2*2不用管,第二部分是第一次循环时得到1的第二次幂运算1*2*2, 第三部分是第二次循环时得到0的第一次幂运算0*2,第四部分就是二进制数组下标为2的元素:1,也是下一次循环会进行幂运算的数。   这时我们发现总共的4次循环已经进行了3次,剩下1次,所以这里的下次幂运算值:1会在后面的1次循环里乘以2,即1*2;

    第四次循环:算式为: (((0*2 + 1)*2 + 0)*2 +1 )*2 +1 == 0*2*2*2*2 + 1*2*2*2 + 0*2*2 +1*2 + 0  ,第一部分0*2*2*2*2不用管,第二部分是第一次循环时得到1的第三次幂运算1*2*2*2, 第三部分是第二次循环时得到0的第二次幂运算0*2*2,第四部分是第三次循环时得到1的第一次幂运算1*2,第五部分就是二进制数组下标为3的元素:0,也是下一次循环会进行幂运算的数。   这时我们发现总共的4次循环已经进行了4次,剩下0次,

    所以本次运算就是整个算法的结果: 0*2*2*2*2   +   1*2*2*2   +   0*2*2   +   1*2   +   0  =  0 + 8 + 0 + 2 + 0  =  10 ,这样看是不是觉得很熟悉!没错,其实原理还是和方法一一样样的。

    啰嗦了点,希望能帮到你理解!:)

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

    2021-10-30 19:13:24
    2021年10月30号是本人第一次写csdn,通过这个平台学习到了许多知识,正所谓人人为我,我为人人,今天来和大家来分享一下c语言的二进制转十进制算法二进制由两个数(0与1)构成的,如1001、1000、1100、1110...

             2021年10月30号是本人第一次写csdn,通过这个平台学习到了许多知识,正所谓人人为我,我为人人,今天来和大家来分享一下c语言的二进制转十进制的算法!

     

           二进制由两个数(0与1)构成的,如1001、1000、1100、1110、1111等等,他们所对应的十进制的数字是9、8、12、14、15。那么是怎么计算的呢??我们以1001来说明,1001是由4个数字组成的,而二进制是从右往左数,从0开始数,我们看图!

     

     

     

     

          我们计算的方式呢!是看哪个位置上有1开始计算(计算的顺序是从右往左开始),如图0对应的1与3对应的1就是我们要计算的,那么图上的0对应1,那么就是2的零次方、对应3的就是2的三次方,2的零次方等于1,2的三次方就等于8,然后进行相加就是1+8=9!1111、1010都是如此!

            那么我们知道二进制转换10进制的原理了,我们就可以通过次方法来解决c语言的进制转换问题!如图

     


    #include<stdio.h>
    #include<string.h>
    int main(){
    	char a[10];/*不超过10个数字的二进制!!*/ 
    	int c=0,sum=0,m;
    	printf("输入一串二进制数0或者1!");
    	gets(a);/*gets表示输入一个字符到数组*/ 
    	int b=strlen(a);/*定义一个变量b,来存放数组的长度(strlen是来计算数组的元素)!*/ 
    	for(int i=0;i<b;i++){
    		m=1;/*定义一个m的变量是来累乘的一个定值1;*/ 
    		if(a[i]=='1'){/*这里做一个判断!数组里如果有是1的元素,
    						我们就把他取出来计算,等于0则不管!*/ 
    			for(int j=1;j<=b-i-1;j++)/*j<=b-i-1,(算法的核心)由i的变化而去控制b-1的范围!b-1是因为二进制是从0开始算的,
    									j是从1开始的,所以要减去一个1,以上是控制累乘的次数,如果是2的三次方。
    									就循环3次(2*2*2),此时得出2的三次方等于8,如果循环退出,
    									则m的值返回初始的值1,不进行累乘,然后sum加1!*/ 
    			m*=2;
    			sum+=m;
    		}
    	}
    	 printf("%d",sum);
    	 return 0;
    }

                                                                                                                    如有不足之处还请指正!

                                                                                                                                          谢谢大家!

    展开全文
  • )【源码运行环境】操作系统:Windows 10编译环境:Dev C++(基于C99标准)【原理】十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:1、用2整除十进制整数,可以得到一个商和余数;2、再用...

    【背景】

    在计算机中,基本的编码都是以二进制为基础。为此,理解进制转换过程,可以帮助我们更好地理解计算机底层的原理。(本题取自广西师范大学2017年硕士研究生招生考试试题编程题部分。)

    【源码运行环境】

    操作系统:Windows 10

    编译环境:Dev C++(基于C99标准)

    【原理】

    十进制整数转换为二进制整数采用"除2取余,逆序排列"法。

    具体做法是:

    1、用2整除十进制整数,可以得到一个商和余数;

    2、再用2去除商,又会得到一个商和余数;

    3、如此进行,直到商为小于1时为止;

    4、然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位;

    5、依次排列起来。

    【例子】

    以十进制14转换为二进制1110为例:

    初始值:14

    1:14 / 2 = 7 ————>余0

    2:7  /  2 = 3 ————>余1

    3:  3  /  2 = 1  ————>余1

    4:  1  /  2 = 0  ————>余1

    反向输出:1110即为所求。

    【源码实现】

    /*

    * 方法名:converse

    * 作用:用于将一个十进制数字转换为二进制数的递归实现

    * 参数:sum(商)i(位数)

    * 返回值:rest(以int保存的二进制数)

    * author: WellLee

    * 最后一次修改时间:2018年12月6日 19:02:32

    */

    int converse(int sum, int i)

    {

    int rest;                  //余数

    if(sum <= 1 ){  //递归结束条件

    return i * sum;    //结束返回值

    }

    rest = sum % 2;            //先取余数

    sum /= 2;                  //求商取整

    rest *= i;                 //进位操作(包括递归部分的i*10)

    return rest + converse(sum, i * 10); // 递归部分

    }

    【总结】

    本文提出了一种利用递归保存结果求二进制转十进制的C语言程序实现,实现该功能的程序并不止一种,仅供参考。也借此机会锻炼了自己关于递归程序设计的思想。

    【参考文献】

    广西师范大学2016年硕士研究生招生考试《806/826 数据结构》试题

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

    2021-06-24 12:40:04
    中文名十进制转二进制外文名Decimal system to binary system适用领域电子、编程、编码应用学科数学十进制转进制二进制转十进制编辑语音十进制转二进制方法一小数点前或者整数要从右到左用二进制的每个数去乘以2的...
  • 十进制转二进制代码

    2021-02-28 13:24:09
    睡不着 看了一下以前的博客 发现算法bug修复一下 2017年10月4日 01:38:44网上看到一个代码 很有意思大家可以看看public ...//如果该数字为负数,那么进行该负数+1之后的绝对值的二进制码的对应位取反,然后将它...
  • 用C语言顺序栈实现十进制二进制的转换#include#include#include#define M 100typedef int datatype;typedef struct{datatype data[M];int top;}seqstack;void InitStack(seqstack *s){ //初始化顺序栈s->top=-1...
  • 展开全部下面是根据十进制数62616964757a686964616fe59b9ee7ad9431333365646331转二进制数的算法所写的一段Java程序示例代码:import java.math.BigDecimal;public class Test {public static void main(String[] ...
  • 用递归算法求一个int的二进制字符串;思路是:递归最简单情况(递归出口)是0和1;其余的是先调用递归算出n/2的二进制字符串,然后加上n时的位数(n % 2)。import java.util.Scanner;public class WriteBinary {public ...
  • 由于计算机中运行的数据都是以二进制数的形式存在的,学习二进制数的计算成为计算机专业...例如00000000 代表十进制数0二进制数的每一位对应一个十进制数例如 由于二进制最大8位一组,也就是说一组的最大数字问255这...
  • 方法一:直接使用控制字符串 %o 八进制%x方法:求余来算,比如求十进制数 x(x>100) 的8进制,先通过 x%8 可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分,x=x/8(这...
  • 所谓的“进制”, 就是用多少个字符来表示整数十进制是0~9这十个数字字符,二进制是0、 1两个字符十进制转换为二进制, 采用的是“除以2求余数”的算法将整数不断除以2,每次得到的余数就是由低到高的二进制位...
  • 先将一个十进制数转换成二进制数; (构造一个0 ~2^30的数组,用number和数组中每个元素逆序比大小, 如果number >= quan_arr[i], 就让number -= quan_arr[i]; 并且该位置的数就置为1,否则该位置的数置为0, ...
  • Java十进制转二进制算法 一、编程思路 可以运用简单的数学的计算的方法。如下 这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他的余数,这样...
  • c语言二进制转换成十进制的方法

    千次阅读 2021-05-19 13:49:46
    c语言二进制转换成十进制的方法发布时间:2020-04-09 09:52:38来源:亿速云阅读:648作者:小新今天小编给大家分享的是c语言二进制转换成十进制的方法,很多人都不太了解,今天小编为了让大家更加了解二进制转换成...
  • java ê?????êy×a???a?t????,°?????,ê?áù????êyμ???·¨using System;using System.Collections.Generic;using http://www.doczj.com/doc/b605746a58fafab069dc021a.htmlponentModel;...using System.Dr...
  • 二进制十进制,十六制算法一.在计算机应用中,二进制使用后缀b表示;十进制使用后缀d表示,十六制使用后缀H表示。二.二进制,十六进制与十进制的计算转换1.二进制转换为十进制计算公式:二进制数据X位数字乘以2的X...
  • 首先是二进制转换十进制。大家知道所有的二进制10 101 1100 不管怎么变化它都是1开头的,所以第一个数字一定是1这个就不用算了,然后我们从第二位开始看,比如说10那么转换为十进制就是2,11就是3,101就是5。这里有...
  • 十进制转二进制例题

    2021-06-09 05:38:08
    )十进制转二进制简单的来讲,就是把一个十进制的数÷2,一直÷,直到不能除了,就像是1÷2,在十进制转二进制的时候,它的答案为0,没有余数就写0,然后把前面的余数全部合并在一起,不是加在一起,如果第一个数是0...
  • C语言递归算法十进制转换为二进制C语言递归算法十进制转换为二进制完整源码 C语言递归算法十进制转换为二进制完整源码 #include <assert.h> /** * Decimal to binary using recursion algorithm. * ...
  • 二进制表示法在计算机科学中很重要,计算机中存储的所有...十进制的数字如何转换成二进制的,举几个例子就明白了:图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/将17作为被除数,除以2...
  • 分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。...
  • 对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来...将二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。...
  • 十进制转二进制 思想 首先,我们需要知道十进制转换为二进制的手算算法。最简单的就是(10)===》(1010);所以,基本的思想是就是利用%运算,得到的余数,存入栈中来,就可以得到而二进制的数。 实现 void sb(int s,...
  • 十进制:由 0~9 十个数字组成二进制:由 0和1 两个数字组成1、整数转换十进制转二进制的原理:十进制的数除以2,直到商为0,最后反向取余数。比如下图中的例子,十进制的13转为二进制表示,则为1101。二...
  • 二进制转进制算法为了把换算为二进制,将每一个八进制数字替换成表2-2中对应的三位。例如,八进制123换算成结果就是001010011:表2-2 二进制/八进制换算表为了将一个换算为八进制,只需将二进制串划分成每三个位一...
  • //十进制转化二进制VarST:String;N:Integer;BeginST:='';n:=value;Whilen>=2DoBeginst:=stIntToStr(mod_num(n,2));n:=ndiv2;End;st:=stIntToStr(n);Result:=reverse(st);电脑的用十进制来...
  • #include <stdio.h> int main(void) { int i,j; int n; int a[32]; scanf("%d",&n); for(i=0;n>0;i++) { a[i]=n%2; n/=2; } for(j=i-1;j>=0;j--) printf("%d",a[j]);...}
  • 十进制转二进制原理

    千次阅读 2021-04-22 19:11:58
    1. 十进制整数转二进制 假设十进制正整数值为A,对应的二进制数为abcde。 众所周知,二进制数换算为十进制的公式如下: A = a(2^4) + b(2^3) + c(2^2) + d(2^1) + e(2^0) 所以咱们只要把a,b,c,d,e都取出来就能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,398
精华内容 48,959
关键字:

十进制66转二进制算法