精华内容
下载资源
问答
  • 十进制数转换为非十进制

    千次阅读 2009-07-30 14:34:00
    十进制数转换为非十进制书(N进制数) 方法:整数部分采取“除基数取余法”,小数部分采取“乘基数取整法”。所谓除基数取余法就是用基数去除十进制的整数部分,第一次除得的余数作为目的数的最低位,把得到的商再...

    十进制数转换为非十进制书(N进制数)
    方法:整数部分采取“除基数取余法”,小数部分采取“乘基数取整法”。

    所谓除基数取余法就是用基数去除十进制的整数部分,第一次除得的余数作为目的数的最低位,把得到的商再除以该基数,所得余数作为目的数的次低位,依次类推,直到商为0,所得余数作为目的数的最高位。

    53/2=26…..1    低位

    26/2=13…..0

    13/2=6……..1                 即:(53)10=(110101)2

    6/2=3……….0

    3/2=1………..1     

    1/2=0………..1    高位

    所谓乘基数取整法就是用小数乘上基数,第一次乘得结果的整数部分为目的数的小数部分的最高位,其小数部分再乘上基数,所得结果的整数部分为目的数的次高位,以此类推,继续上述的过程,直到小数部分为0或达到要求的精度为止。

    将十进制小数0.3125转换为二进制数的过程如下:

    0.3125

    X2

    ……………………………………..0.6250    整数部分为0

    X2

    ……………………………………..1.25      整数部分为1

    0.25

    X2

    …………………………………….0.50      整数部分为0

    X2

    ……………………………………1.0       整数部分为1

    即:(0.3125)10=(0.0101)2

    展开全文
  • 将非负十进制整数n转换成b进制。(其中b=2~16) 二、算法设计思路 递归模型: 1、递归出口:即当整数n 等于0时,递归结束。if (0 == n) return 0; 2、递归体的函数式:int change2(f(n), int b);f(n)=n/b; ...

    一、题目分析
    将非负十进制整数n转换成b进制。(其中b=2~16)

    二、算法设计思路

    递归模型:
    1、递归出口:即当整数n 等于0时,递归结束。if
    (0 == n)
    return 0;
    2、递归体的函数式:int
    change2(f(n), int
    b);f(n)=n/b;
    递归树的调用过程:
    在这里插入图片描述
    三、程序代码
    递归方法:

    #include<stdio.h>
    #include<windows.h>
    //将非负十进制n转换成b进制
    char arry[100];
    int i = 0;
    int change2(int n, int b){
     if (0 == n)  //当n=0时,退出循环
      return 0;
     else{
      int x = n%b;   //将n%b的值存放在x中
      n/= b;   //此时n变成n/b
      if (x < 10){
       arry[i] = x+'0';  //定义的字符数组要加上字符0,否则输出为字符的ASCII码值
      }
      else{
       switch (x)   //若输入的数大于10,转换为16进制
       {
       case 10: arry[i] = 'A';
        break;
       case 11:arry[i] = 'B';
        break;
       case 12: arry[i] = 'C';
        break;
       case 13: arry[i] = 'D';
        break;
       case 14: arry[i] = 'E';
        break;
       case 15: arry[i] = 'F';
        break;
       default:
        break;
       }
      }
      i++;  
      change2(n, b);//再次进入递归体中
     }
    }
    int main(){
     printf("请输入十进制数和转化为几进制:");
     int n;
     int b;
     scanf_s("%d %d", &n, &b);
     change2(n,b);
     for (int j = i - 1; j >= 0;j--){
      printf("%c", arry[j]);  //逆序输出函数
     }
     printf("\n");
     system("pause");
     return 0;
    }
    

    非递归方法:

    
    int main(){
     printf("请输入十进制数和转化为几进制:");
     int  m; //输入的十进制数
     int r;//几进制 
     int n; 
     scanf_s("%d %d", &m,&r);
     if (0==m){
      printf("0");
     }
     int arr[32];//定义一个整型数组
     int i = 0;
     int b; //保存m%r余数的值
     while (m != 0){
        b = m%r;
        arr[i++] = b;//将余数放到数组中
        m = m / r;
      }
      while (i>0)
      {
       n= arr[--i];
       if (n<10)
        printf("%d", n);
       else
        switch (arr[i]){
        case 10:
         printf("A");
         break;
        case 11:printf("B");
         break;
        case 12:printf("C");
         break;
        case 13:printf("D");
         break;
        case 14:printf("E");
         break;
        case 15:printf("F");
         break;
        default:
         printf("%d", arr[i]);
       }
      }
      printf("\n");
     system("pause");
     return 0;
    }
    

    2、测试结果

    1、输入小于10的数将其转换为2进制
    在这里插入图片描述

    2、输入大于10的数,将其转换为16进制
    在这里插入图片描述

    3、输入数字将其转换为8进制
    在这里插入图片描述
    五、经验总结

    十进制的数转成二进制,最常用的方法,就是除b取余法,将十进制的数n除以b取其余数,这里得到的余数是b进制数的最后一位。比如:7转化为2进制,先用7%2得到的是1,这里的1是转化后的二进制数的最后一位,再接着,令n=n/b,即为除得的整数结果, n=7/2=3;再同以上的方法将,3%2=1作为2进制数的倒数第二位。以此类推,2进制数的倒数第三位等于3/2%2=1;这时n=0了,循环到此终止,二进制的数为111,代码实现时需要逆序输出(这里很容易想到用数组来存取每一个余数)。若b进制的数共有X位,令n=X-1;n往下移动一位一直到n=0,对数组进行输出。递归函数最重要的就是递归出口和递归体函数,所以在做题目时,一定要明确这两个的内容。

    展开全文
  • 在java的进制转换中,java自带的有相关的方法,二进制转换为十进制,只需要使用Inteager.valueOf(s,a),其中,s代表的是需要转换的二进制数,后面的a代表我们当前数的进制。比如我们要转换的数是二进制,则a为2. ...

    在java的进制转换中,java自带的有相关的方法,二进制转换为十进制,只需要使用Inteager.valueOf(s,a),其中,s代表的是需要转换的二进制数,后面的a代表我们当前数的进制。比如我们要转换的数是二进制,则a为2.

    但是,我们今天要写的是不使用这种自带的方法,来实现二进制到十进制的转换:

    首先我们需要一个变量来存储我们的被转换数,其次,我们要使用的是一个变量来存储最终的输出结果,然后,是我们用一个数来实现位权 的变化,实现1.2.4.8.16.32.。。。。。。在这种转换的时候,他的循环条件是我们的被转换数不为0,在这个循环体内,用y来自增。对被转换数进行取余操作,然后乘上我们的权。然后更新被转换数,同时将权再乘以二,表示将权往前推一位:

    具体程序可以看下面:public class CoreJava02 {
     /**
      * 用x存储要转换的二进制数,y是用来接受最终的结果
      *
      */
     public static void main(String[] args) {
      int x = 1001001, y = 0;
      // 二进制转换为十进制
      int t = 1;
      while (x > 0) {
       y += x % 10 * t;
       x = x / 10;
       t = t * 2;
      }
      System.out.print("输出的十进制数是:" + y);
     }
    }
    这里面,我们被转换数是x,存储结果是y,t是权位

    当输入的数不为0的时候,进行循环,循环体里面,y实现自增,更新x,以及更新t;

    展开全文
  • =16),要求用递归算法和递归算法两种方式解决问题,分析题目可知,十进制数转任一进制所用方法都是模以所转进制的数字再取余,直到所取余数零结束。 2、算法设计 r代表n%k的余数,n是输入的十进制数,k是要转换...

    1、 题目分析

    本次上机题目是把一个十进制数n转换成b进制数(2<=b<=16),要求用递归算法和非递归算法两种方式解决问题,分析题目可知,十进制数转任一进制所用方法都是模以所转进制的数字再取余,直到所取余数为零结束。

    2、算法设计

    r代表n%k的余数,n是输入的十进制数,k是要转换的进制
    递归出口 n==0
    递归体 r=n%k; n=n%k

    3、源程序

    递归方法

    #include<iostream>
    using namespace std;
    char d[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
    
    int Change(int n, int k) //递归方法实现十进制数n转换为k进制数 
    {
    	int r=0;
    	r = n%k; 
    	n = n/k;
    	if(n!=0) //递归体,n=0是递归出口 
    	{
    		Change(n,k);
    	} 
    	printf("%c",d[r]); 
    }
    
    int main()
    {
    	int x, m;
    	cout<<"请输入非负十进制数:"<<endl;
    	cin>>x;
    	cout<<"请输入要转换的进制:"<<endl;
    	cin>>m;
    	Change(x,m);
    	return 0;
    }
    
    

    非递归方法

    #include<iostream>
    using namespace std;
    char d[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    char a[100];
    
    int Change(int n,int k)   //非递归方法实现十进制数n转换为k进制数 
    {
    	int r = 0;
    	while(n!=0)
    	{
    		a[++r] = n%k;
    		n = n/k;
    	}
    	for(int j=r;j>=1;--j)  //倒序输出余数 
    		printf("%c",d[a[j]]);
    }
    
    int main()
    {
    	int x, m;
    	cout<<"请输入非负十进制数:"<<endl;
    	cin>>x;
    	cout<<"请输入要转换的进制:"<<endl;
    	cin>>m;
    	Change(x,m);
    	return 0;
    }
    
    

    4、运行结果截图

    递归方法运行结果
    在这里插入图片描述
    非递归方法运行结果;
    在这里插入图片描述

    展开全文
  • //递归方法 void int_binary(unsigned int integer) { int i = 0,j; int b[32]; if(integer == 0) return; if(integer > 0) //终止条件 { b[i++] = integer % 2; integer /= 2; int_...
  • using System;using System.Collections.Generic;...namespace ConsoleApplication3{ class Program { static void Main(string[] args) { //利用栈的原理,把十进制数字转换为八进制数字 Stack s = new Stack
  • 将非负十进制整数n转换成b进制。(其中b=2~16) 算法分析 记住这个方法:对于进制转换类问题,就是不断的余b模b。(b代表进制数的基数) 具体步骤:重复执行①和步骤②,直到n0结束。 ①取b进制数的个位:求余...
  • 将非负十进制整数n转换成b进制。(其中b=2~16) 基本要求: 完成题目1,采用递归思想编程解决问题,要求设计出递归模型(递归出口和递归体的函数式)。 程序设计风格良好,实现功能测试代码,确保程序的健壮性。 ...
  • 一、题目名称:将非负十进制整数n转换成b进制。(其中b=2~16) 二、算法设计: 1.使用递归方法:递归出口:当输入的十进制整数0时,退出函数,...2.递归方法:当输入的十进制数大于0时,进行求余运算,判断转...
  • 我想不使用十进制的原因是二进制与十进制间存在等值转换。  二进制数10100101.0101111转八进制:  以小数点中心,向两端以3位一组(因为3个二进制位可以表示一个八进制),分别进行八进制转换,不足三位...
  • 调用系统自带的方法,此算法是自己写的!用户输入一个十进制数字,分别自动转换为进制数与十六进制数,输入数字提示错误
  • 1.数据进制 指数据的进位计数规则,又称进位计数制,简称进制 2.常见的数制类型 名称 简写 ...十进制(Decimal) ...权值,指对应数值位的进制幂次方...3.1 二进制转换为非二进制 3.1.1 二进制 转 八进制 方法:3位二进
  • 进制之间的转换

    2019-08-24 16:58:54
    目录 一常见数制类型及表示方法:... 2 1.1十进制(Decimal):...... 1.2二进制(Binary):......2.1 非十进制数转换为十进制数... 4 1.二进制转换位十进制... 5 2.八进制转换为十进制:... 5 ...
  • 不同进制之间的转换

    千次阅读 2018-11-26 09:55:02
    在这里暂且只讨论整型正数,二、八、十、十六进制之间的相互转换,以后可能会对整型负数...十进制数转换成任何进制数时,均除其进制取余(这两个结论应该不止仅限于二、四、八、十六进制的相互转换)。那么,...
  • 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 给出一个非负整数,将它表示成十六进制的形式。 每道题的输入格式可能不太一样,但是解决思路都是通用的。 我们也可以拓展一下...
  • 在Python中,非十进制数字的表示方式: 二进制:前面加0b,如0b1001 八进制:前面加0o,如0o3562 十六进制:前面加0x,如0x2af3 不同进制数字可直接进行数学计算,结果返回十进制: x=0b100 #二进制的4 y=0xa #...
  • 编程实现,把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数。这个用堆栈地方法很容易实现,但我试了下堆栈法,我写的不太好,望指教。 #define _CRT_SECURE_NO_WARNINGS /*将十...
  • 二进制(0b 或 0B)与八进制 (0o 与 0O) 八进制可以写成 0xx,但是在...一个非十进制数转换为十进制数的通用方法: 上面说的特殊开头的除外 这个做法即是,由这个数的最低位起,为0次方,依次往高位递增,这个位...
  • 方法: (1)Number(),强制类型转换,接受一个参数。 ...(3)parseFloat(),把字符串转换为浮点型数字,接受一个参数,只可以转换十进制的字符串。 (4)函数法:用字符串-0,例:var temp...
  • 基数转换

    2019-09-22 03:08:55
    1、由非十进制数转换为十进制数 由八进制、十六进制二进制数向十进制数转换 十进制数的每一位都是10的指数幂。所以1998可以解释为:  1998.123 = 1 x 103 + 9 x 102 + 9 x 101 + 8 x 100+ 1 x 10-1 + 2 x 10-2 +...
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    支持字符常量,字符型自动转换为整型(值为该字符的ASCII码),支持C/C++转义字符。 如何得到字符的ASCII码: 'a' = 97 'A' = 65 'a' + 3 = 100 'a' - 'A' = 32 '\''=39 '\"' = '"' = 34 '\? = '?' = 63 '\\...
  • 对于进制转换,c/c++要用到辗转相除,不仅浪费时间,还造成代码量繁多,而任意之间的进制转换还需要以十进制为跳板,先将其他进制的数字转换为十进制,再将十进制转换为其他进制,而java中自带进制转换的函数与方法,...
  • 数制与编码.pptx

    2020-12-03 18:26:40
    不同数制间的相互转换:十进制转换为二进制、十进制转换成八进制、十进制转换成十六进制、非十进制数之间的相互转换 二进制逻辑运算 二进制数的四种表示形式:原码、补码、反码、移码 补码的加减法运算
  • 能把数值转换为数值的3个函数:Number()、parseInt()和parseFloat()。 共同点:返回值都是数值或者NaN。 不同点: 1、Number()可以用于任何数据类型,而parseInt()、parseFloat()专门用于把字符串转换为数值; ...
  • 学习c++第二周

    2020-11-08 23:01:37
    1.非十进制数转换成十进制数的方法是将十进制数按权展开求和,十进制数转换十进制数的方法是:整数之间的转换用除基取余法,小数之间的转换用乘基取整法。 2.计算机中最小的数据单位是二进制的位(bit),字节...
  • ①通过Number()转换函数传入一个字符串,它会试图将其转换为一个整数或浮点数直接量,这个方法只能基于十进制进行转换,并且字符串中不能出现数字的字符,否则将返回NaN。 ②parseInt()函数:它是全局函

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 216
精华内容 86
关键字:

十进制数转换为非十进制方法