精华内容
下载资源
问答
  •  首先介绍 二进制转换十进制进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:101100100,转换为10进制为:356横式计算(从右往左算)0×20+0×21+1×22+0×23+0×24+1×25+1×26...

    最近在学习计算机基础 研究到进制转换,颇有心得,在此做个解释和记录;

     首先介绍       二进制转换十进制

    二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
    所以,设有一个二进制数:101100100,转换为10进制为:356
    用横式计算(从右往左算)
    0×20+0×21+1×22+0×23+0×24+1×25+1×26+0×27+1×28=356
    0乘以多少都是0,所以我们也可以直接跳过值为0的位:
    1×22+1×25+1×26+1×28=356
    4+32+64+256 =356

    然后介绍       十进制转换二进制

         十进制转换2进制的方法可以总结的说 就是除2取余 除二取余······

        例如

          画图来说:


    展开全文
  • 十进制数笔算转换进制 如果想把一个十进制的数字转换成n进制的数: 举个例子:325装换成16(n)进制的数 325除以n(n = 16)且算出余数 325 / 16=20 … 5 商再次除以n(n = 16)且算出余数 20 / 16 = 1 … 4 ...

    十进制数笔算转换进制

    如果想把一个十进制的数字转换成n进制的数:
    举个例子:325装换成16(n)进制的数

    1. 用325除以n(n = 16)且算出余数
      325 / 16=20 … 5
    2. 用商再次除以n(n = 16)且算出余数
      20 / 16 = 1 … 4
    3. 重复第二步指导商为0
    4. 把余数从最后一个排列到第一个

    tips:如果计算16进制时余数大于9:
    转换表:

    10 A
    11 B
    12 C
    13 D
    14 E
    15 F

    如果有一个余数是13,那么把它按照上表替换成D

    展开全文
  • 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并 二进制转十进制 编辑 要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左...

    十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并

    二进制转十进制

    编辑
    要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右
    例如:二进制数1101.01转化成十进制
    1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25(10)
    所以总结起来通用公式为:
    abcd.efg(2)=d*20+c*21+b*22+a*23+e*2-1+f*2-2+g*2-3(10)
    或者用下面这种方法:
    把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。
    2的0次方是1(任何数的0次方都是1,0的0次方无意义)
    2的1次方是2
    2的2次方是4
    2的3次方是8
    2的4次方是16
    2的5次方是32
    2的6次方是64
    2的7次方是128
    2的8次方是256
    2的9次方是512
    2的10次方是1024
    2的11次方是2048
    2的12次方是4096
    2的13次方是8192
    2的14次方是16384
    2的15次方是32768
    2的16次方是65536
    2的17次方是131072
    2的18次方是262144
    2的19次方是524288
    2的20次方是1048576
    即:
    此时,1101=8+4+0+1=13
    再比如:二进制数100011转成十进制数可以看作这样:
    数字中共有三个1 即第一位一个,第二位一个,第六位一个,然后对应十进制数即2的0次方+2的1次方+2的5次方, 即
    100011=32+0+0+0+2+1=35

    十进制转二进制

    编辑
    1. 十进制整数转换为二进制整数
    十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
    十进制整数转二进制
    如:255=(11111111)B
    255/2=127=====余1
    127/2=63======余1
    63/2=31=======余1
    31/2=15=======余1
    15/2=7========余1
    7/2=3=========余1
    3/2=1=========余1
    1/2=0=========余1
    789=1100010101(B)
    789/2=394 余1 第10位
    394/2=197 余0 第9位
    197/2=98 余1 第8位
    98/2=49 余0 第7位
    49/2=24 余1 第6位
    24/2=12 余0 第5位
    12/2=6 余0 第4位
    6/2=3 余0 第3位
    3/2=1 余1 第2位
    1/2=0 余1 第1位
    原理:
    众所周知,二进制的基数为2,我们十进制化二进制时所除的2就是它的基数。谈到它的原理,就不得不说说关于位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为 “位权 ” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。十进制数的百位、十位、个位、十分位的权分别是10的2次方、10的1次方、10的0次方,10的-1次方。二进制数就是2的n次幂。
    按权展开求和正是非十进制化十进制的方法。
    下面我们开讲原理,举个十进制整数转换为二进制整数的例子,假设十进制整数A化得的二进制数为edcba 的形式,那么用上面的方法按权展开, 得
    A=a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4) (后面的和不正是化十进制的过程吗)
    假设该数未转化为二进制,除以基数2得
    A/2=a(2^0)/2+b(2^1)/2+c(2^2)/2+d(2^3)/2+e(2^4)/2
    注意:a除不开二,余下了!其他的绝对能除开,因为他们都包含2,而a乘的是1,他本身绝对不包含因数2,只能余下。
    商得:
    b(2^0)+c(2^1)+d(2^2)+e(2^3),再除以基数2余下了b,以此类推。
    当这个数不能再被2除时,先余掉的a位数在原数低,而后来的余数数位高,所以要把所有的余数反过来写。正好是edcba
    2.十进制小数转换为二进制小数
    十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
    十进制小数转二进制
    如:0.625=(0.101)B
    0.625*2=1.25======取出整数部分1
    0.25*2=0.5========取出整数部分0
    0.5*2=1==========取出整数部分1
    再如:0.7=(0.1 0110 0110...)B
    0.7*2=1.4========取出整数部分1
    0.4*2=0.8========取出整数部分0
    0.8*2=1.6========取出整数部分1
    0.6*2=1.2========取出整数部分1
    0.2*2=0.4========取出整数部分0
    0.4*2=0.8========取出整数部分0
    0.8*2=1.6========取出整数部分1
    0.6*2=1.2========取出整数部分1
    0.2*2=0.4========取出整数部分0
    原理:
    关于十进制小数转换为二进制小数
    假设一十进制小数B化为了二进制小数0.ab的形式,同样按权展开,得
    B=a(2^-1)+b(2^-2)
    因为小数部分的位权是负次幂,所以我们只能乘2,得
    2B=a+b(2^-1)
    注意a变成了整数部分,我们取整数正好是取到了a,剩下的小数部分也如此。
    值得一提的是,小数部分的按权展开的数位顺数正好和整数部分相反,所以不必反向取余数了。

     

    转载于:https://www.cnblogs.com/h-c-g/p/10093423.html

    展开全文
  • 第六章递归 题目二借鉴自: ...这道题目要求将十进制分别转化为二进制、八进制和十六进制。递归函数重视寻找递归体和递归的终止条件。 题目二:任何一个正整数都可以2的幂次方表示。例如: 137=27+23+20。同...

    第六章递归
    题目二借鉴自:
    https://blog.csdn.net/u011954296/article/details/51029600
    一.题目分析
    题目一:将非负十进制整数n转换成b进制。(其中b=2~16)
    这道题目要求将十进制分别转化为二进制、八进制和十六进制。递归函数重视寻找递归体和递归的终止条件。
    题目二:任何一个正整数都可以用2的幂次方表示。例如:
    137=27+23+20。同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为: 2(7)+2(3)+2(0)。进一步:7=22+2+20(21用2表示)3=2+20。所以最后137可表示为:
    2(2(2)+2+2(0))+2(2+2(0))+2(0)。
    先将输入数据137按指数从大到小分为2(7)+2(3)+2(0),然后又将指数按上面同样的方法分为2(2)+2+2(0)、2+2(0)、0,就可分出137的最终结果2(2(2)+2+2(0))+2(2+2(0))+2(0)。非常明显,这道题应该运用递归思想。
    二.算法构造
    题目一:
    递归方法:递归体为ds(s / 2),递归终止条件为s0。其中s为输入的十进制数字。s%x,x为想转换的进制。当s0时,return。此外的情况,执行递归体。在十进制转换为二进制、十进制和十六进制问题上采取同样的方法。注意在十进制装换为十六进制时,若是s % 16 > 9),则需要执行printf("%c", s % 16) - 10 + ‘A’);。这是由于十六进制中09可以用自身表示,而1015需要用‘A’~‘F’表示。
    非递归方法:输入十进制数s,s==0时,结束。其他情况执行s/x(x为想转换的进制),且输出s%x,执行此操作的条件为s!=0。所以要借助于do~while()语句。
    题目二:如果输入fun(137,0),则输出为2(7)+2(3)+2(0)。 这时,如果对7和3递归处理,则为满足题意的输出。void fun(int n, int r),其中n为操作数,r为递归深度。
    三.程序实现
    题目一:

    #include<stdio.h>
    #include<windows.h>
    //递归实现十进制转换为二进制
    int ds(int s)
    {
    	//s = s / 2;	//取模操作
    	//printf("%d", s % 2);    //对/2获得的整数进行取余操作
    	if (s == 0)	
    	{
    		return;	
    	}
    	else
    	{
    		ds(s / 2);	//递归体
    		printf("%d", s % 2);    //对s取余操作
    
    	}
    }
    int main()
    {
    	int d = 0;
    	printf("请输入一个十进制数:");
    	scanf_s("%d", &d);
    	ds(d);
    		system("pause");
    	return 0;
    }
    //递归实现十进制转换为八进制
    int ds(int s)
    {
    	if (s==0)	
    	{
    		return ;
    	}
    	else
    	{
    		ds(s / 8);//取模操作
    		printf("%d", s % 8);    //对s进行取余操作
    	}
    }
    int main()
    {
    	int d = 0;
    	printf("请输入一个十进制数:");
    	scanf_s("%d", &d);
    	ds(d);
    	system("pause");
    	return 0;
    }
    //递归实现十进制转换为十六进制
    int ds(int s)
    {
    	if (s == 0)
    	{
    		return;
    	}
    	else
    	{
    		ds(s / 16);	
    		if (s % 16 > 9)
    			//printf("%c", s % 16);
    			printf("%c", (s % 16) - 10 + 'A');
    		else
    		
    			printf("%d", s % 16);
    
    		
    		//printf("%d", s % 16);    
    
    	}
    }
    int main()
    {
    	int d = 0;
    	printf("请输入一个十进制数:");
    	scanf_s("%d", &d);
    	ds(d);
    	system("pause");
    	return 0;
    }
    //非递归实现十进制转换为二进制
    int main()
    {
    	int s = 0;
    	printf("请输入一个十进制数:");
    	scanf_s("%d", &s);
    	if (s == 0)
    	{
    		return;
    	}
    	else
    	do{
    		s = s / 2;
    		printf("%d", s % 2);
    	}while(s!=0);// 对s取余操作
    	system("pause");
    	return 0;
    }
    //非递归实现十进制转换为八进制
    int main()
    {
    	int s = 0;
    	printf("请输入一个十进制数:");
    	scanf_s("%d", &s);
    	if (s == 0)
    	{
    		return;
    	}
    	else
    		do {
    			s = s / 8;
    			printf("%d", s % 8);
    		} while (s != 0);// 对s取余操作
    		system("pause");
    		return 0;
    }
    //非递归实现十进制转换为十六进制
    int main()
    {
    	int s = 0;
    	printf("请输入一个十进制数:");
    	scanf_s("%d", &s);
    	if (s == 0)
    	{
    		return;
    	}
    	else
    		do{
    			s = s / 16;
    			if (s % 16 > 9)
    				printf("%c", (s % 16) - 10 + 'A');
    			else
    				printf("%d", s % 16);  
    		} while (s != 0);
    		system("pause");
    		return 0;
    }
    

    题目二:

    void fun(int n, int r)
    {
    	//递归结束,最先输出,不带+号
    	if (1 == n)
    	{
    		//将r表示成0和2
    		switch (r)
    		{
    			//2^0,递归深度为0
    		case 0: printf("2(0)");
    			break;
    			//2^1,递归深度为1
    		case 1: printf("2");
    			break;
    			//2^2,递归深度为2
    		case 2:printf("2(2)");
    			break;
    			//2^r,递归深度为r
    		default:
    			printf("2(");
    			fun(r, 0);
    			printf(")");
    		}
    	}
    	else
    	{
    		//n除以二,递归深度加1
    		fun(n / 2, r + 1);
    		//如果模2有余数,则为2^r
    		if (1 == n % 2)
    		{
    			//将r表示成0和2
    			switch (r)
    			{
    				//2^0,递归深度为0
    			case 0:printf("+2(0)");
    				break;
    				//2^1,递归深度为1
    			case 1:printf("+2");
    				break;
    				//2^2,递归深度为2
    			case 2:printf("+2(2)");
    				break;
    				//2^r,递归深度为r
    			default:
    				printf("+2(");
    				fun(r, 0);
    				printf(")");
    			}
    		}
    	}
    }
    int main()
    {
    	fun(137, 0);
    	system("pause");
    	return 0;
    }
    此题借鉴自:
    https://blog.csdn.net/u011954296/article/details/51029600
    

    四.调用过程
    题目一:
    在这里插入图片描述
    上图为十进制转换为二进制的调用过程,十进制转换为八进制和十进制转换为十六进制的过程与上图方法相同。
    五.运行结果
    题目一:
    十进制转化为二进制:
    在这里插入图片描述
    十进制转换为八进制:
    在这里插入图片描述
    十进制转换为十六进制:
    在这里插入图片描述
    题目二:
    在这里插入图片描述
    六.经验总结
    在接触到题目一时,首先应该了解到数制之间该如何转换的细节。然后构思递归实现的具体细节。涉及递归处理问题时,必须要将大问题转换为小问题,最重要的是寻找递归终止条件和构造递归体。“除2取余,逆序输出”是十进制转换为二进制数的思想核心,其它进制的转换同理。。非递归实现题目一时,思路不变,对程序稍作改动,并且借助于do~while()语句即可。对于题目二余力不足呐。

    展开全文
  • 转载https://www.cnblogs.com/wxb20/p/6033458.html 这篇文章主要介绍了十进制负数转换为二进制、八进制、十六进制的知识分享,需要...但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,...
  • 二进制十进制转换

    2019-05-31 11:58:00
    二进制、八进制、十六进制与十进制的不同顾名思义在于进位不同: 十进制遇十进一,9+1=10,19+1=20,199+1=200。相同数字下前一位是后一位的十倍,例如11,前一个代表10,后一个是1。 二进制遇二进一,1+1=10,10+...
  • 方法一:十进制数除以二,取余数,再商继续除以2,一直到商为0是,将所得到的余数逆序排列,就是该十进制数二进制转化结果。 方法二:二进制序列最右边开始,对应十进制值为20,往左依次为21、23、24、25、26、...
  • 十进制转换二进制

    2018-04-19 20:57:14
    问题 B: Hz的进制时间限制: 1 Sec 内存限制: 128 MB提交: 20 解决: 14[提交][状态][讨论版]题目描述Hz遇到一个数学问题,想请教聪明的你:给定一个有符号整数类型的,Hz想知道该数二进制表示中1的个数。...
  • 二进制转换十进制

    万次阅读 2017-06-11 01:10:57
    众所周知,十进制(数字用0,1,2,3,4,5,6,7,8,9这十个数字来表示)的进位规则是”逢十进一”。 比如零、一、二、三、四、五、六、七、八、九都是用一位来表示。...计算机用二进制(数字
  • //不是它printf,将十进制数二进制和十六进制的形式输出 #include "stdafx.h" #include using namespace std; //将十进制转换为2进制 char *get2string(long n){ char b[20]; static char a[20]; ...
  • 十进制整数转换二进制用的是短除法。 以25为例, 25除以2,等于12余1 12除以2,等于6余0 。 。 。 1除以2.等于0余1 然后从下往上看,25的二进制就是11001 将二进制整数转换十进制,只需要将相对应位置上的1或者...
  • 十进制二进制相互转换

    千次阅读 2018-06-05 17:09:38
    一、二进制转十进制要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右例如:二进制数1101.01转化成十进制1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25所以总结起来通用...
  •  显而易见,对2N对应的十进制数记得越多,则“定位减权法”处理的十进制数据就会越大,但是20~210 对应的十进制数值是基本要求。   记住了上述的数值后,我们就可以对任何一个十进制数值轻松的转换二进制...
  • 二进制转换十进制进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:101100100,转换为10进制为:356 横式计算 0×20+0×21+1×22+0×23+0×24+1×25+1×26+0×27+1×28=...
  • 十进制二进制的相互转换

    千次阅读 2015-03-19 09:11:41
    要从右到左用二进制的每个数去乘以2的相应次方 例如:二进制数1101.01转化成十进制 1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25 所以总结起来通用公式为: abcd.efg(2)=d*20+...
  • 1. 【二进制(0~1)、八进制(0~7)、十进制(0~9)】→十六进制(0~15,10~15之间的数用A~F表示) 101011→1*20+1*21+0*22+1*23+0*24+1*25=1+2+0+8+0+32=43 //二进制十进制 053→3*80+5*81=3+40=43//八进制转十进制...
  • 我们需要了解一个数学关系,即23=8,24=16,而八进制和十六进制是这关系衍生而来的,即三位二进制表示一位八进制,四位二进制表示一位十六进制数。接着,记住4个数字8、4、2、1(23=8、22=4、21=2、20=1)。 ...
  • 声明:此文档只做学习交流使用,请勿用作其他商业用途 作者:朝阳_tony 邮箱:linzhaolover@gmail.com 2013年1月13日20:05:29 星期日 ...C语言将十进制整形数转换二进制,然后通过字符型输出 , #include
  • 十六进制 Hex number system 是计算机中数据的一种表示方法.... N进制可以0---(N-1)的表示超过9的字母A-F 例如: 10进制的32表示成16进制就是:20 16进制的32表示成10进制就是:3×16^1+2×16^0=50
  • 计算机只能识别二进制,这是众所周知的。但除了二进制,还有别的进制,它们之间是怎样转换的呢...0.二与八转换:二进制中的一位对应八进制的三位,即八进制中的每一位我们用二进制数来表示,不够三位,用0补全三位 ...
  • 进制转换

    2021-02-23 19:54:34
    其他进制转十进制:从右向左,第一个数乘20(即1),第个数乘21,以此类推。 T1:进制转换 题目描述 输入一个十进制下的正整数 N 和 R,输出这个整数N对应的R进制数。 输入 一行,包含两个正整数N和R。(N<=1e9,2&...
  • 二进制转换

    2019-09-30 18:08:09
    ⑴二进制转十进制的第一个方法是要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右 例如:二进制数1101.01转化成十进制 1101.01(2)=1*20+0*21+1*22+1*23+0*2-1+1*2-2=1+0+4+8+0+0.25=13.25(10...
  • 用户输入一个十进制的数,然后分别转为二、八、十六... * 列如变成二进制,那么就用十进制数除2取余,然后把余数储存到一个数组中,最后要注意倒叙输出 */ public static void f(StringBuilder sb){ //倒叙输出
  • 一个算法实现十进制数进制数转换 任务如图![任务](https://img-blog.csdnimg.cn/20201217183705653.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV...
  • 十进制二进制(c语言基础训练)

    千次阅读 2018-04-26 17:08:59
    /*************************** 十进制转化二进制 除二取余法 .../*编写一个函数zhuan 将十进制a转换二进制并打印到屏幕上*/ void zhuan(int a ){ int i = 0 , stack[20] ,r ,s; //简化程序 栈结构用数...
  • 要从右到左用二进制的每个数去乘以2的相应次方例如:二进制数1101.01转化成十进制1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25所以总结起来通用公式为:abcd.efg(2)=d*20+c*21+b*22+a*23+e*...
  • 四周—进制转换

    2016-12-04 12:44:31
    文件名称:数组将十进制数转换进制数 作者:邓哲 时间:2016年12月4日12:42:38 #include int main() { int a[20]; int digit,i=0,j; scanf("%d",&digit); if(digit==0||digit==1) { printf("%d",...
  • 7 IP地址转换 (20分)——进制转换

    千次阅读 2017-03-11 20:13:16
    进制转换知识建议参考——百度百科PTA原题链接7 IP地址转换 (20分)一个IP地址是四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。输入格式: 输入在一...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 299
精华内容 119
关键字:

十进制数20用二进制转换