每日一句:
同伴,不一定非要一起走到最后,某一段路上,对方给自己带来的朗朗笑声,那就已经足够。 八月长安—《你好,旧时光》
今日正月十五啦,祝大家元宵节快乐哈!随便在这里给大家科普一下元宵节啦。
元宵节,又称上元节、小正月、元夕或灯节,为每年农历正月十五日,是中国的传统节日之一。正月是农历的元月。
武汉疫情仍在继续,到今天已有三万四千多人被确诊,确诊人数虽然在增多,但庆幸的是没有向前几天那样呈线性增长。
前几天听朋友说他以前去面试,面试官问他八进制转换二进制原理,他脑袋瞬间就断路了,这种最基础的知识,常常容易被大家遗忘。我自己也是,这种在高中学过的知识,我在学习C语言时也曾因为忘记而不知怎么解题。
今天就给大家详细的讲解一下进制转换。
首先先看一下维基百科给的定义:进位制是一种记数方式,亦称进位计数法或位值计数法。利用这种记数法,可以使用有限种数字符号来表示所有的数值。一种进位制中可以使用的数字符号的数目称为这种进位制的基数或底数。若一个进位制的基数为n,即可称之为n进位制,简称n进制。现在最常用的进位制是十进制,这种进位制通常使用10个阿拉伯数字(即0-9)进行记数。
对于学习计算机专业的人来说,八进制和十六进制应该不会感到陌生把
。因为八进位制和十六进位制系统通常用于计算机领域,它们可方便当作二进位制的简写。十六进位制数字对应于四位二进位制数字的序列,因为十六是二的四次方;八进位制数和二进位制的数字序列之间也有类似关系,因为八是二的立方。底数通常是自然数。然而,其它位进制系统也是可能的。黄金比率底数(其底为非整数代 数)和负底数(其底为负数)。
先说十进制和二进制的转换
十进制转二进制方法:先用十进制除二取余法,即十进制数除二,余数为权位上的数,得到的商值继续除,直到商为0为止。
例:将十进制的(43)D转换为二进制的步骤如下:
1. 将商43除以2,商21余数为1;
2. 将商21除以2,商10余数为1;
3. 将商10除以2,商5余数为0;
4. 将商5除以2,商2余数为1;
5. 将商2除以2,商1余数为0;
6. 将商1除以2,商0余数为1;
即结果为:(43)D=(101011)B;
二进制转十进制的方法:把二进制数按权展开,相加即得十进制数。
例:将二进制的(101011)B转换为十进制的步骤如下:
1. 第0位 1 x 2^0 = 1;
2. 第1位 1 x 2^1 = 2;
3. 第2位 0 x 2^2 = 0;
4. 第3位 1 x 2^3 = 8;
5. 第4位 0 x 2^4 = 0;
6. 第5位 1 x 2^5 = 32;
7. 读数,把结果值相加,1 2 0 8 0 32=43,即(101011)B=(43)D。
八进制与二进制之间的转换
八进制转二进制方法:八进制数通过除二取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
例:将八进制的(327)O转换为二进制的步骤如下:
1. 3 = 011;
2. 2 = 010;
3. 7 = 111;
4. 读数,读数从高位到低位,011010111,即(327)O=(11010111)B。
二进制转八进制方法:三位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。
例:将二进制的(11010111.0100111)B转换为八进制的步骤如下:
1. 小数点前111 = 7;
2. 010 = 2;
3. 11补全为011,011 = 3;
4. 小数点后010 = 2;
5. 011 = 3;
6. 1补全为100,100 = 4;
7. 读数,读数从高位到低位,即(11010111.0100111)B=(327.234)O。
十六进制与二进制之间的转换
十六进制转换为二进制方法:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
例:将十六进制的(D7)H转换为二进制的步骤如下:
1. D = 1101;
2. 7 = 0111;
3. 读数,读数从高位到低位,即(D7)H=(11010111)B。
二进制转换为十六进制方法:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
例:将二进制的(11010111)B转换为十六进制的步骤如下:
1. 0111 = 7;
2. 1101 = D;
3. 读数,读数从高位到低位,即(11010111)B=(D7)H。
十进制与八进制或者十六进制数之间的转换
十进制转换为八进制或者十六进制的方法:
NO.1 (间接法)把十进制转成二进制,然后再由二进制转成八进制或者十六进制。(此方法在此就不举例了哈)
NO.2直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。
例:将十进制的(796)D转换为八进制的步骤如下:
1. 将商796除以8,商99余数为4;
2. 将商99除以8,商12余数为3;
3. 将商12除以8,商1余数为4;
4. 将商1除以8,商0余数为1;
5. 读数,因为最后一位是经过多次除以8才得到的,因此它是最高位,读数字从最后的余数向前读,1434,即(796)D=(1434)O。
十六进制或者八进制转换为十进制的方法:把八进制、十六进制数按权展开、相加即得十进制数。
例:将八进制的(53)O转换为十进制的步骤如下:
1. 第0位 3 x 8^0 = 3;
2. 第1位 5 x 8^1 = 40;
3. 读数,把结果值相加,3 40=43,即(53)O=(43)D。
十六进制与八进制之间的转换
十六进制转换为八进制的方法:将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。
例:将十六进制的(D7)H转换为八进制的步骤如下:
1. 7 = 0111;
2. D = 1101;
3. 0111 = 7;
4. 010 = 2;
5. 011 = 3;
6. 读数,读数从高位到低位,327,即(D7)H=(327)O。
八进制转换为十六进制的方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。
例:将八进制的(327)O转换为十六进制的步骤如下:
1. 3 = 011;
2. 2 = 010;
3. 7 = 111;
4. 0111 = 7;
5. 1101 = D;
6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。