进制算法
⑴ 十六进制转换成十进制的具体算法
十六进制转换成十进制的具体算法是:
1、首先明白16进制数(从右到左数是第0位,第1位,第2位……)的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次这样排列下去。
2、明白ABCDEF表示的二进制数字分别是10,11,12,13,14,15。
3、十六进制转换成十进制的公式是:要从右到左用二进制的每个数去乘以16的相应次方,然后这些数字相加就是了。
在进行进制转换时有一基本原则:
转换后表达的“量”的多少不能发生改变。二进制中的111个苹果和十进制中的7个苹果是一样多的。
十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分……
R进制中的数位排列是这样的……R^4 R^3R^2 R^1 R^0 R^-1 R^-2 R^-3……
可以看出相邻的数位间相差进制的一次方。
⑵ 请问进制的转换算法
参考
http://www.2vvv.com/Article/ShowArticle.asp?ArticleID=2717&Page=1
http://bbs.wangmeng.cn/dispbbs.asp?BoardID=5&replyID=204&id=75&skin=0
⑶ 二进制转十六进制算法(举例)
二进制转十六进制
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
从右到左 4位一切
例如 100111110110101
左边不满4位的可以用0补满 0100,1111,1011,01012
进制0000对应16位进制0
0001>>>1
0010>>>2
0011>>>3
0100>>>4
0101>>>5
0110>>>6
0111>>>7
1000>>>8
1001>>>9
1010>>>A
1011>>>B
1100>>>C
1101>>>D
1110>>>E
1111>>>F
所以上面的2进制转为16进制为 4FB5
(3)进制算法扩展阅读
十六进制--->二进制
反过来,当看到 FD时,迅速将它转换为二进制数方法
先转换F:
看到F,需知道它是15,然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
接着转换 D:
看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
所以,FD转换为二进制数,为: 1111 1101
由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
⑷ 16进制转换2进制算法
将十六进制数转换为二进制数:
方法一:
将每一位的十六进制数转换为相应的4位二进制数,参照转换表直接转换如下:
方法二:
先把16进制每个数转为十进制,十六进制的1-9也对应十进制的1-9,十六进制的A-F对应十进制的10-15,再通过十进制转化为二进制(将十进制数连续除2,直至得0余x,并将每次的余数从右至左记下),最后将所得的四位二进制数顺序排列。
举例:
对于十六进制数字F6:
采用方法一:
F=1111,6=0110
所得即为11110110
采用方法二:
f=15 除2得 7余1
7 除2得 3余1
3除2得1余1
1除2得0余1
将余数从下往上(从1的余数1到15的余数1)排列,所以f=1111
同理6=0110
得f6=11110110
⑸ 二进制转十进制,十进制转二进制的算法(求助)
二进制转换为十进制:
方法:“按权展开求和”,该方法的具体步骤是先将二迸制的数写成加权系数展开式,而后根据十进制的加法规则进行求和 。
规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依次递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
十进制转换为二进制:
一个十进制数转换为二进制数要分整数部分和小数部分分别转换,最后再组合到一起。
整数部分采用 "除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
小数部分要使用“乘 2 取整法”。即用十进制的小数乘以 2 并取走结果的整数(必是 0 或 1),然后再用剩下的小数重复刚才的步骤,直到剩余的小数为 0 时停止,最后将每次得到的整数部分按先后顺序从左到右排列即得到所对应二进制小数。
通用进制转换:
不同进制之间的转换本质就是确定各个不同权值位置上的数码。转换正整数的进制的有一个简单算法,就是通过用目标基数作长除法;余数给出从最低位开始的“数字”。
(5)进制算法扩展阅读:
1、十进制整数转二进制整数:
十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2、十进制小数转换为二进制小数:
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
参考资料:网络-二进制
⑹ 进制怎么算
计算机的进制计算方法
二进制转十进制方法:“按权展开求和”
例: (1011.01)2 =(1×2^3+0×2^2+1×2^1+1×2^0+0×2^(-1)+1×2^(-2) )10 =(8+0+2+1+0+0.25)10 =(11.25)10 (2)十进制转二进制 · 十进制整数转二进制数:“除以2取余,逆序排列”。
(6)进制算法扩展阅读:
对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。
⑺ 十六进制计算方法
0-9对应0-9;
A-F对应10-15;
十六进制数的加减法的进/借位规则为:借一当十六,逢十六进一。
十六进制数同二进制数及十进制数一样,也可以写成展开式的形式。
十进制整数转十六进制数:“除以16取余,逆序排列”(除16取余法)
例:(1765)10=(6E5)2
1765/16=110.......5
110/16=6........14
616=0......6
因为14对应E
十六进制数转换成二进制数:把每一个十六进制数转换成4位的二进制数,就得到一个二进制数。
十六进制数字与二进制数字的对应关系如下:
0000 -> 0 0100 -> 4 1000 -> 8 1100 -> C
0001 -> 1 0101 -> 5 1001 -> 9 1101 -> D
0010 -> 2 0110 -> 6 1010 -> A 1110 -> E
0011 -> 3 0111 -> 7 1011 -> B 1111 -> F
例:将十六进制数5DF.9 转换成二进制:
5 D F . 9 0101 1101 1111 .1001
即:(5DF.9)16 =(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110 6 1 . E
即:(1100001.111)2 =(61.E)16
(7)进制算法扩展阅读:
进制转换的理论:
1、 二进制数、十六进制数转换为十进制数:
用按权展开法把一个任意R 进制数a n a n-1 ...a1a 0 . a -1 a -2...a -m转换成十进制数,其十进制数值为每一位数字与其位权之积的和。
a n ×Rn+ a n-1×R n-1 +…+ a 1×R 1 + a 0×R 0 + a -1 ×R -1+ a -2×R -2+ …+ a -m ×R -m
2、 十进制转化成R 进制十进制数轮换成R 进制数要分两个部分:
整数部分要除R 取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排 列) 。小数部分要乘R 取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列) 。
3、十六进制转化成二进制:每一位十六进制数对应二进制的四位,逐位展开。
4、 二进制转化成十六进制:将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。
⑻ 16进制的算法,请举例~
例如将十进制数55转化为十六进制
55÷16=3.....7
3÷16=0.....3
55的十内六进容制是37
例如将十六进制数37化为十进制数
37=3*16+7*1=55
(8)进制算法扩展阅读:
在历史上,中国曾经在重量单位上使用过16进制,比如,规定16两为一斤。
如今的16进制则普遍应用在计算机领域,这是因为将4个位元(Bit)化成单独的16进制数字不太困难。1字节可以表示成2个连续的16进制数字。可是,这种混合表示法容易令人混淆,因此需要一些字首、字尾或下标来显示。
⑼ 所有进制的算法
#include <stdio.h>void a();void b();void c();void main(){ int s; do { printf("0.退出\n1.十进制~二进制\n2.十进制~八进制\n3.十进制~十六进制\n请选择:"); scanf("%d",&s); if(s==0) { break; } switch(s) { case 1: a();break; case 2: b();break; case 3: c();break; default:printf("输入有误!请输入0~4之间的数\n");break; } }while(1);}void a(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%2; num/=2; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void b(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%8; num/=8; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void c(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%16; num/=16; n++; } for(i=n-1;i>=0;i--) { if(p[i]<10) { printf("%d",p[i]); } else { switch(p[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; } } } printf("\n");} 答案补充 10进制数转化成R进制数就是不断地 取余、整除,最后把所有余倒序排列 比如:6转化成2进制数的步骤是,6取2的余是0,整除得3,3取2的余是1,整除得1,1取2的余是1,整除2得0,计算结束,再把所有余倒序排列,即110。
其它进制也是同样的道理,如果进制大于10,就要用ABCD来分别表示10进制中的(10、11、12、13、14),可以去查询下权的概念
⑽ 进制数的算法
2到8: 从右边开始每3个数隔开分开转为2进制 如 1,110,110=166
8-2: 每一位分别用3位2进制展开,不够3位的左边补0
如 :123=001,010,011=1010011
2-10: 按权展开,1或者0乘以2的位数减一次方
如:110101 共6位 1*2的6次方+1*2的5次方+0*2的4次方。。。类推
10-2: 除2取余 倒序取值
如8 7/2=3 余1 3/2=1 余1 1/2=0 余1 结果111
13 13/2=6~1 6/2=3~0 3/2=1~1 1/2=0~1 结果1101
好学生加油吧!