【从零开始学数字IC设计(一):数电篇】一:数制

常用数制及相互转换

1、几种常用数制

1.1、十进制

十进制的每一位由0~9十个数码表示,低位和相邻高位之间的关系是“逢十进一”。计数方式:0→1→。。。→9→10→11→。。。→19→20→21→。。。→29→30→31。。。

1.2、二进制

二进制的每一位由0、1表示,低位和相邻高位之间的关系是“逢二进一”。计数方式:0→1→10→11→100→101。。。

1.3、八进制

八进制的每一位由0~7表示,低位和相邻高位之间的关系是“逢八进一”。计数方式:0→1→。。。→7→10→11→。。。→17→20→21→。。。→27→30→31→。。。

1.4、十六进制

十六进制的每一位由0~9、A、B、C、D、E、F十六数码表示,低位和相邻高位之间的关系是“逢十六进一”。计数方式:0→1→.。。。→9→A→B→C→D→E→F→10→11→。。。1F→20→21→。。。→2F→30→31。。。

2、不同数制之间的转换

2.1、二进制与十进制转换

2.1.1 二-十转换

将二进制数的第N位数值乘以第N位的权重,其中第N位的权重为2ᴺ(注:m位二进制数从右向左分别记为第0,1,。。。,m-1位,最低位是第0位,最高位是第m-1位),然后将相乘的结果按十进制数相加,就可以得到等值的十进制数。
举个栗子:(101)₂=1×2²+0×2¹+1×2⁰=(5)₁₀ ,这个二进制数第2位是1,它的权重是2²,相乘为1×2²;第1位是0,它的权重是2¹,相乘为0×2¹;第0位是1,它的权重是2⁰,相乘为1×2⁰,最后将每一位的乘积按十进制运算相加。

2.1.2 十-二转换

将十进制数拆分为2的幂之和的形式,幂的次数为N表示第N位为1,剩余的位数为0。
举个栗子:(99)₁₀ = 64+32+2+1=2⁶ + 2⁵ + 2¹ + 2⁰ ,表示第6位、第5位、第1位、第0位为1,其他位为0,等价二进制数为(1100011)₂
方法不限于这一种,比如还有除2取余法。

2.2、二进制与八进制转换

2.2.1 二-八转换

将二进制数从右向左三位一组拆分,不足三位的将高位补0,每一组按照数值乘以权重再求和的方法求出对应的八进制数,再从右向左排列。
举个栗子:(10011)₂从右向左分为011、010两组,(011)₂=0×2²+1×2¹+1×2⁰=3,(010)₂=0×2²+1×2¹+0×2⁰=2,(10011)₂对应的八进制数为23

2.2.2 八-二转换

和二进制转为八进制数相反,将八进制数从右向左的每一位用三位二进制数表示,再将所有的三位二进制数从右向左排列。
举个栗子:(34)₈从右向左,4表示为3位二进制数是100,3表示为三位二进制数是011,那么(34)₈对应的二进制数为11100

2.3、二进制与十六进制转换

2.3.1 二-十六转换

将二进制数从右向左四位一组拆分,不足四位的将高位补0,每一组按照数值乘以权重再求和的方法求出对应的十六进制数,再从右向左排列。
举个栗子:(101011)₂从右向左分为1011、0010两组,(1011)₂=1×2³+0×2²+1×2¹+1×2⁰=B,(0010)₂=0×2³+0×2²+1×2¹+0×2⁰=2,(101011)₂对应的十六进制数为2B

2.3.2 十六-二转换

和二进制转为十六进制数相反,将十六进制数从右向左的每一位用四位二进制数表示,再将所有的四位二进制数从右向左排列。
举个栗子:(3C)₁₆从右向左,C(即12)表示为四位二进制数1100,3表示为三位二进制数是0011,那么(3C)₁₆表示为二进制数为00111100

2.4、十六进制与十进制转换

十六进制数与十进制数相互转换可以将二进制数作为桥梁,先将十六进制数按2.3.2介绍的方法转化为二进制数,再按2.1.1介绍的方法将二进制数转化为十进制数。
十进制数转化为十六进制数同理。

你可能感兴趣的:(【从零开始学数字IC设计(一):数电篇】一:数制)