基于硬件的C(C++)语言程序设计教程6:进制转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingwufeiyang12346/article/details/83053499

本系列文章希望探讨以硬件为平台讲述C(C++)知识的一个新的途径,改变目前大多数C语言教程仅注重C语言本身的语法规则,而脱离其应用环境的现状。希望读者通过本教程的学习,能够立刻学以致用,真正将所学知识应用到项目实践中。

开发环境:Atmel Studio 7.0

硬件平台:Microchip AVR ATmega168PA

参考教材:C++程序设计(第3版) 谭浩强编著,清华大学出版社

备注:1、教程仅适合初学者,高手请绕过

           2、本文大部分内容来源于网络,经整理而得
 

一、 进制的概念

在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。

对于进制,有两个基本的概念:基数和运算规则。

基数:基数是指一种进制中组成的基本数字,也就是不能再进行拆分的数字。二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制值相同,二进制有两个基数,十进制有十个基数,依次类推。

运算规则:运算规则就是进位或借位规则。例如对于二进制来说,该规则是“满二进一,借一当二”;对于十进制来说,该规则是“满十进一,借一当十”。其他进制也是这样。

二、 二、八、十、十六进制基数对照表

三、(二、八、十六进制) → (十进制)

 

1、二进制 ==》十进制

方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

例:将二进制的(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。

2、二进制 ==》八进制

方法:八进制数从低位到高位(即从右往左)计算,第0位的权值是8的0次方,第1位的权值是8的1次方,第2位的权值是8的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

八进制就是逢8进1,八进制数采用 0~7这八数来表达一个数。

例:将八进制的(53)O转换为十进制的步骤如下:

1. 第0位 3 x 8^0 = 3;

2. 第1位 5 x 8^1 = 40;

3. 读数,把结果值相加,3+40=43,即(53)O=(43)D。

3、二进制 ==》十六进制

方法:十六进制数从低位到高位(即从右往左)计算,第0位的权值是16的0次方,第1位的权值是16的1次方,第2位的权值是16的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

十六进制就是逢16进1,十六进制的16个数为0123456789ABCDEF。

例:将十六进制的(2B)H转换为十进制的步骤如下:

1. 第0位 B x 16^0 = 11;

2. 第1位 2 x 16^1 = 32;

3. 读数,把结果值相加,11+32=43,即(2B)H=(43)D。

四、(十进制) → (二、八、十六进制)

1、十进制 ==》二进制

例:将十进制的(43)D转换为二进制的步骤如下:

2、十进制 ==》八进制

例:将十进制的(796)D转换为八进制的步骤如下:

3、十进制 ==》十六进制

例:将十进制的(796)D转换为十六进制的步骤如下:

五、(二进制) ↔ (八、十六进制)

1、二进制 ==》八进制

例:将二进制的(11010111.0100111)B转换为八进制的步骤如下:

2、八进制 ==》二进制

例:将八进制的(327)O转换为二进制的步骤如下:

3、二进制 ==》十六进制

例:将二进制的(11010111)B转换为十六进制的步骤如下:

4、十六进制 ==》二进制

例:将十六进制的(D7)H转换为二进制的步骤如下:

六、(八进制) ↔ (十六进制)

1、八进制 ==》十六进制

方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。

2、十六进制 ==》八进制

方法:将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。

任何问题,只需在此文章的评论处留言即可,我将尽力解答,不要试图采用其它的联系方式,我一概不理会。

原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346。

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qingwufeiyang12346/article/details/83053499