目录
写给读者的话:
详解进制转换,击破各位小伙伴的痛、难点,通俗易懂、接地气。
一、基本元素(3个)
让我们来认识一下“进位计数制”中的“三叛逆”:数码、基数、位权
1、数码:在某一种进位计数制下所表示的数使用的最基本的符号
2、基数:在某一种进位计数制中所能使用的数码的个数
注:例如:十进制的数码为0、1、2、3、4、5、6、7、8、9,基数为10;二进制的数码为10、1,基数为2。
3、位权:每一个数码所表示的在十进制下的数值 = 该数码 * “一个与数码所在的数码串中的位置相关的常数”
,其中这个常数称为 位权,简称 权。
注:在进位计数制中,数码所在的位置不同则表示的位权也不同。
公式3-1
位权的值 = 基数R的i次幂 公式3-2
注:N指的是某串数码在十进制下所表示的数值; m、n均为正整数,且m表示小数的位数,n表示整数的位数;i为单个数码所在的位置的序号;R是基数,R^i是位权;Ki是单个数码。其中,单个数码所在位置的序号以小数点前的第一位为序号“0”,第二位为序号“1”,小数点后的第一位为序号“-1”依次展开。
举个例子:
十进制6832.45 = 6 * 10^(4-1) + 8 * 10^(3-1) + 2 * 10^(2-1) + 3 * 10^(1-1) + 4 * 10^(-1) + 5 * 10^(-2)
二、数制的表示
在书写不同数制下的数时,为了区别开来,人们常在“数的尾部用一个特定的字母来表示(B表示二进制数,O或Q表示八进制数,D表示十进制数,H表示十六进制数,如果未使用任何字母,则默认为十进制数)” 或者是“把数用括号括起来,并在括号的右下角下标写上该数所对应的基数的数值”。
例如:10D、10H、(6832.45)10
三、数制间的转换
1、R进制转十进制
“位权展开求和”法:
公式3-1
位权的值 = 基数R的i次幂 公式3-2
注:N指的是某串数码在十进制下所表示的数值; m、n均为正整数,且m表示小数的位数,n表示整数的位数;i为单个数码所在的位置的序号;R是基数,R^i是位权;Ki是单个数码。其中,单个数码所在位置的序号以小数点前的第一位为序号“0”,第二位为序号“1”,小数点后的第一位为序号“-1”依次展开。
2、十进制转R进制
(1)十进制整数转R进制
“除基取余,逆序排列”法:
①将十进制整数不断除以基数R,并逐次求得余数,直到商为0;
②将所得到的余数按照逆序的方式写出,即后得到的余数先写,先得到的余数后写。
(2)十进制小数转R进制
“乘基取整,顺序排列”法:
①将十进制小数的小数部分乘以基数R,再将所得结果的整数部分取走;接着乘以基数R,直到“小数部分”出现0或满足所需的精度为止;
②将所得到的整数部分按照得到的先后,在小数点后依从左向右的顺序书写
③在将最初的十进制小数的整数部分按照“除基取余,逆序排列”法转换为R进制,然后将转换的结果写在小数点的前面。
注;还记得 这个十进制小数的整数部分是咋算的吗,还记得苯宝宝在讲“十进制整数转R进制”时的1101这一串神秘的代码吗?
提示:十进制小数转非十进制小数是有误差的。对于某些数,乘若干次基数后,取走整数部分后也不为0,如(0.1)10,要保留多少位小数,取决于用户对数据的精度的要求。例2-8中算到1.504时,如果没有精度的要求的话,就已经满足“小数部分”出现为0的要求,即可停止运算了,即(0.344)10 = (0101)2。
———————————————————————————————————————————分割线
3、二进制转八进制
“三位一并”法:
①从小数点开始,整数部分从右向左、小数部分从左向右每三位二进制数划分为一组,位数不足三位时整数部分向前补0,小数部分向后补0;
②按照对应的位置写出与每一组二进制数在十进制下等值的八进制数和小数点,即得到转化后的八进制数。
4、二进制转十六进制
“四位一并”法:
①从小数点开始,整数部分从右向左、小数部分从左向右每四位二进制数划分为一组,位数不足四位时整数部分向前补0,小数部分向后补0;
②按照对应的位置写出与每一组二进制数在十进制下等值的十六进制数和小数点,即得到转化后的十六进制数。
5、八进制转二进制
“一分为三”法:
①对每一位八进制数用对应的三位二进制数表示;
②将得到的二进制数依照从左向右的顺序来书写,即得到转换后的二进制数。
注:八进制、十六进制数转换成二进制数时,整数前的最高位的“0”和小数后的最低位的“0”都是无效的“0”,所以在转换结果中可去掉。
6、十六进制转二进制
“一分为四”法:
①对每一位十六进制数用对应的四位二进制数表示;
②将得到的二进制数依照从左向右的顺序来书写,即得到转换后的二进制数。
7、其他进制间的相互转换
各位小伙伴可能会有疑问了,咦,八进制和十六进制之间的转化呢?
其实,很简单。各位要会找个“中介”,先将八进制(十六进制)转化为非十六进制(非八进制),然后再转化为十六进制(八进制)。