iOS开发中的进制转换

进制转换

开发中常用的进制有二进制、十进制、十六进制,此文章旨在说明进制转换的规则、流程;最后用OC写了进制转换的方法,自测是ok的;

生活中最常用的是十进制,所以进制转换总的可以分为两大类:
第一类:其他进制(如二进制、十六进制)转十进制;
第二类:十进制转其他进制(如二进制、十六进制);

第一类:其他进制转十进制

1、抛开进制的观念,数值都可以写成这种形式:xxxx.xxxx,因为进制的不同,导致每一位代表的数值不同,也就是“进制”和“位置”组成了不同的数值;
2、这里先明白一个概念,就是“基数”,多少进制的基数就是多少,如二进制的基数为2,十进制的基数为10,十六进制的基数为16;
3、以小数点为分界线,整数部分从低位到高位顺序依次为0,1,2...,小数部分从高位到低位顺序依次为-1,-2,-3....

比如对于十进制数值 101.01,位置顺序为

十进制数值 1 0 1 . 0 1
位置顺序 2 1 0 -1 -2
代表数值 1x10^2 0x10^1 1x10^0 0x10^-1 1x10^-2

把代表的数值相加起来就得到了十进制数值101.01,同理,对于其他进制也是相同的原理,通用公式就是

m x radix^p

p表示位置;radix表示进制基数;m表示位置p对应的数字;

总结:其他进制转为十进制就是把每一位表示的数值相加起来即可;

第二类:十进制转其他进制

十进制转其他进制可以分为两部分:整数部分和小数部分;
整数部分规则:除基数反向取余
小数部分规则:乘基数正向取整

1、整数部分:

对于整数部分,用被除数反复除以基数,除第一次外,把得到的商作为下一次除法运算的被除数,每一次得到的余数就是该进制数值的数值,注意位置是反向的。当商为0的时候就表示运算结束了。

2、小数部分:

对应小数部分,乘以基数得到一个新的数值,把这个新的数值的整数部分作为该进制的数值,小数部分作为下一次乘法运算的乘数,注意位置是正向的。当小数部分为0或者达到所需要的小数位数之后就表示运算结束了。

最后,oc的进制转换代码地址为:oc语言的进制转换

你可能感兴趣的:(iOS开发中的进制转换)