欢迎光临散文网 会员登陆 & 注册

C/C++每日一问--进制转换

2020-07-08 21:28 作者:程序员龙一  | 我要投稿

6月收官,7月伊始,2020,进入暑期。

考研迎来了一个比较关键的时期,从现在开始进行专业课--C/C++的复习,为了保证学习质量、夯实基础,特别设置【每日一问】专栏,对自己的学习成果进行实践检验以及知识拓展,裂变自己接触和学习过的知识及技巧;主要是理论和实践相结合,以基础知识为主,实践操作为辅,保证学习效果,和大家一起回顾知识,共同进步,加油!

特别提示:【每日一问】栏目包括但不限于【今日主题】、【实践演练】、【知识裂变】等模块,内容比较基础,适合新手学习以及熟手进行知识回顾,大神勿喷,请自动绕道,谢谢!


1今日主题-进制转换

今天我们先来学习一下进制转换,主要包括十进制与二进制、八进制、十六进制之间的相互转换。

提示:

二进制:由0、1组成,末尾加B表示二进制;

八进制:由0~7中数字的组成,末尾加Q表示八进制;

十进制:由0~9中的数字组成,末尾加D表示十进制;

十六进制:由0~9、A(10)~F(15)中的数字、字母组成,末尾加H表示十六进制;


1、十进制-->“R”进制,R=2、8、16

整数:除R取余法;

小数:乘R取整法;

比如十进制转二进制:

整数:除2取余,按高位-低位排列,具体如下图:

十进制转二进制

小数:乘2取整,按高位-低位排列,具体如下图:

小数转换


2“R”进制转十进制,R=8、16

根据进制进行求解:

八转十:26Q = 2*81+ 6*80 = 22D;

十六转十:26H = 2*161+ 6*160 = 38D。


3、二进制转“R”进制,R=8、10、16

二转八:取三合一;位数从高到低代表22、21、20,数字相乘加起来就是转换后的数字,如:10 100 101 B,转换为八进制为:245Q;

二转十六:取四合一;位数从高到低代表23、22、21、20,数字相乘加起来就是转换后的数字;

如:1001 0101 B,转换为十六进制为:a5H;

二转十:位数从高到低代表2n、...、23、22、21、20,数字相乘加起来就是转换后的数字;

如:11001 B,1*24 + 1*23 + 0*22 +0*21 + 1*20 = 25 D。

2实践演练-代码实现

在实际应用中,我们有时候会遇到需要使用进制转换功能,比如设计串口助手上位机时,有个16进制显示的功能,这时候需要进行进制转换。

上面咱们已经学习了进制转换的基本原理,接下来咱们就应该思考整理,如何编写代码实现进制转换的功能。

3知识裂变-拓展学习

16进制转10进制用C语言如何实现呢?

温馨提示:C语言中没有string的关键字的,一般我们是数组进行字符的存储来进行计算,然后通过scanf和printf函数进行输入和输出。赶快去试一试吧。

问:用单片机做万年历,所使用的时钟芯片DS1302读取时间和设置时间时需要用到什么进制转换?


嵌入式龙憨憨

扫描二维码关注我

置顶/星标公众号,和我一起学习吧!

C/C++每日一问--进制转换的评论 (共 条)

分享到微博请遵守国家法律