c++十六进制转十进制_中国电子学会青少年软件编程等级考试2级(C/C++)专题一:数制和进制转换...

a4822880ffde82bc52c20261faa0a453.png点击上方“蓝字”关注我们吧!

   全国青少年软件编程等级考试是由中国电子学会发起的面向青少年机器人软件编程能力水平的社会化评价项目。

   考试标准汲取国内外高校的人才选拔标准,支持创客教育的实践与工程化理念,全面考察青少年在软件编程的知识能力和实践能力,是青少年迈向人工智能应用领域的基础准备。

e46caf0ee3e1d9e718002007831ecd76.png

计算机中数制的基本概念

 数制的三个基本概念

  数制:记数的方法,指用一组固定的符号和统一的规则来表示数值的方法,如在计数的过程中采用进位的方法则称为进位计数制。进位计数制有数位、基数、位权3个要素。

  数位:

  指数字符号在一个数中所处的位置。

 基数:

  指在某种进位计数制中数位上所能使用的数字符号的个数,例如,十进制数的基数是10,八进制的基数是8,二进制的基数是2。

 不同的数制,可以给数字加上括号,使用下标来表示该数字的数制(当没有下标时默认为十进制)。

  C/C++中整数有三种表示形式:

   1)十进制形式。如99、-1。

   2)八进制形式。以数字0打头,由0-7构成,如012,表示八进制整数12,即12(8)

   3)十六进制形式。以0x打头,如0x12A,表示十六进制整数12A,即12A(16)

在数制中,还有一个规则,这就是,N进制必须是逢N进一。

计算机中常用的数制是十进制。二进制与十进制类似,但是其基数是2,只有两个数字0和1,每超过2时就需要进位。

1.

十进制数的特点是逢十进一。如下图所示:

ea2852647438c781e04256c2c19c25de.png

2.

二进制数的特点是逢二进一。如下图所示:

b4495bd341d23e5b6e691a40bd6dd8b0.png

3.

八进制数的特点是逢八进一。如下图所示:

956d1c4d2bb8a5cf7a1863e74775a4c4.png 

4.     

十六进制数的特点是逢十六进一。如下图所示:

92f2a3ddb64e44079b4ca5ceeb325aca.png 

二进制与十进制之间的转换

1.   十进制转二进制

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

(具体用法如下图)

2.    2

b00b6890833ee5dafde1372682ae983a.png

二进制转十进制

方法为:把二进制数按权展开、相加即得十进制数。

(具体用法如下图)

65cca5051a5b6240b9a94491784cd08e.png

二进制与十六进制之间的转换

1.   二进制转十六进制

方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

(具体用法如下图)

b9717dd97541a1b7286d9d94b9223f20.png

2.    2

十六进制转二进制

方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

(具体用法如下图)

0bbab8366e0d7d1a26de7f19d3b52977.png

2进制转10进制程序

#include

using namespace std;

//2进制转10进制,形参为长整型

long long btod(long long s)

{

       longlong m=1,n=0;

       while(s)

       {

                n=n+m*(s%10);

                m=m*2;

                s/=10;

       }

       return n;

}

//2进制转10进制,形参为字符串

long long btod2(string s)

{

       long long m=1,n=0;

       int l=s.size();

       for(int i=0;i

       {

                n=n+m*(s[l-1-i]-'0');

                m=m*2;

       }

       return n;

}

//测试程序

int main()

{

       long long s,m=1,n=0;

       string s2;

       cin>>s;

       cin>>s2;

       cout<

       cout<

       return 0;

}

//p(p<=16)进制数s转换十进制数

#include

using namespace std;

int main()

{

  int ans=0,p;

  string s;

  cin>>p>>s;

  for (int i=0;i

   {

       ans=ans*p;

       if (s[i]=='A'||s[i]=='B'||s[i]=='C'||s[i]=='D'||s[i]=='E'||s[i]=='F')

       {

           ans=ans+(s[i]-'A'+10);

       }

       else

       {

           ans=ans+(s[i]-'0');

       }

   }

  cout<

进制数"<的10进制数为:"<

  return 0;

}

//十进制数n转换成p(p<=16)进制数

#include

using namespace std;

int main()

{

   int y=0,k,n,p;

   string s;

   cin>>n>>p;

   cout<进制数"<的"<

进制数为:";

   while (n!=0)

   {  

       k=n%p;

       if(k>9)

            s+=char('A'+k-10);

       else

            s+=char(k+'0');

        n=n/p;

    }

   for (int i=s.size()-1;i>=0;i--)

             cout<

   return 0;

}

编程技术和学习等问题请联系下方老师咨询

68c0f97b7f8fa836035100339e6625cd.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值