C语言基础—进制转换

进制及进制转换

        进制也就是进制计数位,是人为定义的带进位的计数方法。对于任何一种进制--X进制,就表示每一位置上的数运算是都是逢X进一位。如:十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,X进制就是逢X进一。

         计算机中的进制分为二进制,八进制,十进制,十六进制。

1.二进制,八进制,十六进制转化为十进制数的规律是相同的。把二进制(八进制或者十六进制数)按位权形式展开多项式的和的形式,求其最后的和,就是其对应的十进制数——简称按权求和。

如:(10110)2 ->(1*2^4+0*2^3+1*2^2+1*2^1+0*2^0)10

->(20)10

(245)8->(2*8^2+4*8^1+5*8^0)->(165)10

(1F2)16->(1*16^2+15*16^1+2*16^0)10->(498)10

2.十进制转化为二进制,八进制和十六进制,先讲十进制转化为二进制,再将二进制转化为八进制和十六进制。

特别地十进制转化为二进制可以使用除2求余法,但最好使用贪心算法。

例如:(103)10->()2

128 64 32 16 8 4 2 1

    0    1     1    0  0  1  1 1

第一步判断103是否大于等于128否则填0,第二步判断103大于64填1,则剩余103-64=39,然后39>=32,填1剩7,然后继续进行判断,写出二进制数(01100111)

然后二进制数转化八进制是3个二进制数转为1个八进制数,因为2^3=8,二进制转为16进制数是4个二进制数转一个十六进制数,因为2^4=16。

例:(01100111)2->(147)8

01/100/111->1 4 7

(01100111)2->(67)16

0110/0111->6 7

 

 

你可能感兴趣的:(C语言基础,c语言)