C语言16进制如何才能转换为10进制 不要给我源代码函数我想知道原理。什么计算公式的写明白。

如题所述

首先抛开你的10进制思维,再来看看如下内容。
不管是2进制,10进制,16进制,n进制,都是逢多少进1的数字规律。那么n进制的时候,就必须有n个符号代表从0~n-1的数值。
比如2进制有2个符号:0、1
比如10进制有10个符号:0、1、2、3、4、5、6、7、8、9
比如16进制有16个符号:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f
从下边开始,你看到的10不是十进制的10,你一定要抛开进制的思维,才能看懂!(当然有1个例外:就是说明几进制的时候,是十进制的思维,不然你没法看得懂!比如12进制,是十进制的情况下理解的12,并不是12进制下的12,因为12进制下的12,这个12是12+2=14,即十进制的14)
在n进制的情况下,个位数逢n进1,也就是从0变到10要0+n,
此时10表示已经累加了n,请想想要怎么才能变为20?
没错,又得加一次n,也就是累加2*n才能变成20,继续看:
那从10如何变成100呢?因为是n进制,所以,从“十”位数的0要再往前进1,必须是“十”位数要累加n次。
也就是上边的10变到20,算1次。20变30相当于累加2次。加上00变10,算1次。所以从00变30相当于“十”位累加3次,因为上一段说了,“十”位0要往前进1,必须累加n次。
那你看看从个位数0要往前进1,也是要个位数累加n次。所以,个位数0要向“百”位进1,即0变为100,则是需要个位数累加n*n次才行的!深化解释:因为个位数累加n变为10,而“十”位也是0累计n次才能变为100,即:n倍个n才能让个位数从0变为100,即n*n=100,即“百”位是第3位数,所以从0变为100需要累加(n的3-1次方)。
同理:从0变到“1000”,是4位数,所以从0变到1000需要累加(n的4-1次方)。
同理:从0变到“1000……0”这里假设有88个0,即89位,那么从0变到“1000……0”是需要累加(n的88次方)。如果这里是有m个0,从个位数0变为这个数,个位数必须累加累加(n的m次方)
注意:n是进制。
******************************
从下边开始,讲的都是16进制,(n进制同理,就不再讲n进制了)
所以16进制代入上式,可以得到从0变到10000,是需要个位数累加16的4次方的。这里的16的4次方中的16是需要用十进制的思维去理解的(而不是16进制下的16,因为16进制下的16是16+6=22,即十进制的22等于16进制下的16。所以,这里的16的4次方中的16是实实在在的十进制的16,下同。其他还是16进制思想)。
上边知道10000就是16的4次方。那么20000,则是2*(16的4次方)。如果是80000就是8*(16的4次方),f0000就是f*(16的4次方)
同理:259fa4=200000+50000+9000+f00+a0+4
上式=2*(16的5次方)+5*(16的4次方)+9*(16的3次方)+f*(16的平方)+a*(16的1次方)+4
将上式转10进制=2*(16的5次方)+5*(16的4次方)+9*(16的3次方)+15*(16的平方)+10*(16的1次方)+4
即=2*16*16*16*16*16+5*16*16*16*16+9*16*16*16+15*16*16+10*16+4
这就是16进制转10进制的规律。
*********************
说明:如果你看不懂上边的16进制转10进制的话,你真不太适合C编程。那么就建议你学java了,可能还能找到工作
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-10
十六进制其实是0和1这两个数字组成的表示方法:如十六进制2A,(ABCDEF十进制为10到15),就是二进制0010 1010,从右到左为低位到高位,2A转化为十进制就是,
10*(16的0次方)+ 2*(16的1次方)= 42,
也可以是按二进制算:0*(2的0次方)+1*(2的1次方)+0*(2的2次方)+1*(2的3次方)+0*(2的4次方)+5*(2的5次方)= 42。来自:求助得到的回答
第1个回答  2012-12-10
如果你要打印10进制,直接printf %d就行,如果你要计算,则例如90的16进制的表示值为0x5A。如何获得其十进制的值呢?只需要对其取模得到的是各位的值,在对其取余获得十位的值即可。然后把十位的值乘以10加上个位的值即可本回答被网友采纳
第2个回答  2012-12-07
我有txt版说明你要不?追问

相似回答