数制转换与运算

2019-04-13 20:31发布

class="markdown_views prism-atom-one-light">

几种常用数制

多位任意进制(N进制)数展开的普遍形式:
kiNisum k_{i}N^{i}
式中kik_{i}为第i位的系数,N为多少进制数,NiN^{i}则成为第i位的权。 十进制 二进制 八进制 十六进制 ki10isum k_{i}10^{i} ki2isum k_{i}2^{i} ki8isum k_{i}8^{i} ki16isum k_{i}16^{i} eg.
(101.11)2(101.11)_{2}=1×22+0×21+1×20+1×21+1×221 imes2^{2}+0 imes2^{1}+1 imes2^{0}+1 imes2^{-1}+1 imes2^{-2}

不同数制间的转换

N(任意进制)转化位十进制

只需利用公式kiNisum k_{i}N^{i}展开,各项按十进制相加。

二、八、十六进制间的相互转换。

二进制 八进制 十六进制 212^{1} 8=238=2^{3} 16=2416=2^{4} 由图可知:1位八进制数对应3位二进制数,1位十六进制数对应4位二进制数。 二、八进制相互转换:
二进制3位数每位数的权值分别为1、2、4.只需将二进制数3位对应1位八进制数进行转换即可。 二、十六进制相互转换:
与八进制相互转换类似,二进制4位数每位数的权值分别为1、2、4、8. 八、十六进制相互转换:
推荐以二进制媒介,先转到二进制,再转到八或十六进制。

十进制转化位二、八、十六

十进制转换为二进制:
先处理整数部分,十进制整数(S)10(S)_{10}可按权展开:
(S)10=(ki2i)=ki2i+ki12i1+.......+k121+k020(S)_{10}=(sum k_{i}2^{i})=k_{i}2^{i}+k_{i-1}2^{i-1}+.......+k_{1}2^{1}+k_{0}2^{0}
任务转化为求系数 kik_{i}
(ki2i+ki12i1+.......+k121+k020)=2(ki2i1+ki12i2+.......+k120)+k0(k_{i}2^{i}+k_{i-1}2^{i-1}+.......+k_{1}2^{1}+k_{0}2^{0})= 2(k_{i}2^{i-1}+k_{i-1}2^{i-2}+.......+k_{1}2^{0})+k_{0}
由此可知(S)10/2(S)_{10}/2的余数为k_{0},从而逐步求得各项系数。
在处理小数部分
小数部分可展开为:
(k121+k222+.......+km+12m+1+km2m)=21(k1+k221+.......+km+12m+2+km2m1)(k_{-1}2^{-1}+k_{-2}2^{-2}+.......+k_{-m+1}2^{-m+1}+k_{-m}2^{-m})= 2^{-1}( k_{-1}+k_{-2}2^{-1}+.......+k_{-m+1}2^{-m+2}+k_{-m}2^{-m-1})
有此可知小数部分乘以2后整数部分为k1k_{-1}