【备战蓝桥,冲击省一】 进制转换 你不会还不会吧?

简介: 【备战蓝桥,冲击省一】 进制转换 你不会还不会吧?

d32c5baa5c18faf4c9cc7edba5f4fbda_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ2V5bGFuXw==,size_20,color_FFFFFF,t_70,g_se,x_16.png


🌺其他进制转换成十进制


🌷实现思路


🔺实现原理

从最低位开始,把每一位上的数提取出来,乘上进制数,然后求和。


🔺算法分析

1️⃣从最低位开始一位一位进行判断,有两种情况,第一种为数字,第二种为字母

2️⃣为数字时,答案等于前一次判断的答案 * 进制加上这一位的数字

3️⃣为字母时,答案等于前一次判断的答案 * 进制加上这一位的字母减去'A'加10


🔺图解原理

a04b7df9fea58efcea8bdbc6042a27fb_f59069dd89f042c9b1dadae3510b5d0b.png


🌷二进制转换成十进制


💬 代码演示

int main()    
{
  string s;
  cin>>s;           //二进制数
  int ans=0;
  for(int i=0;i<s.size();i++)
  {
     char t=s[i];
     ans=ans*2+t-'0';
  }
  cout<< ans;
}


🌷八进制转换成十进制


💬 代码演示

int main()    
{
  string s;
  cin>>s;        //8进制数
  int ans=0;
  for(int i=0;i<s.size();i++)
  {
    char t=s[i];
    ans=ans*8+t-'0';
  }
  cout<< ans;
}


🌷十六进制转换成十进制


💬 代码演示

int main()    
{
  string s;
  cin>>s;            //16进制数
  int ans=0;
  for(int i=0;i<s.size();i++)
  {
    char t=s[i];
    if(t>='0'&&t<='9') ans=ans*16+t-'0';
    else ans=ans*16+t-'a'+10;
  }
  cout<< ans;
}


🌺十进制转换成其他进制


🌷实现思路


🔺实现原理

将该数不断除以该进制,直到商为0停止,最后将每步得到的数倒过来,就是答案了


🔺算法分析

1️⃣将该数除以该进制,得到的商有两种情况,第一种情况为0-9,第二种情况为 >9

2️⃣商是 0-9 时,直接记录,进行下一次相除

3️⃣商 >9 时,更改为字母形式,进行下一次相除

4️⃣商为 0 时停止,翻转结果,得到答案


🔺图解原理

这里有一个十进制数【30】,要求转换成二进制数。


d99bfbe8d5fbe649f15dbda1918745f3_e22aec9bd11d43f280993db8e28448b5.png


30除以2,得到商0,数变成15

15除以2,得到商1,数变成7

7除以2,得到商1,数变成3

3除以2,得到商1,数变成1

1除以2,得到商1,数变成0

停止操作,将得到的商翻转,得到【30】的二进制数【11110】


🌷十进制转成二进制


💬 代码演示

int main()    
{
  int n;
  cin>>n;     //十进制数 
  string ans="";
  do
  {
    int t=n%2;
    ans+=t+'0';
    n/=2;
  }while(n!=0); 
  reverse(ans.begin(),ans.end());
  cout<< ans; 
}


🌷十进制转成八进制


💬 代码演示

int main()    
{
  int n;
  cin>>n;     //十进制数 
  string ans="";
  do
  {
    int t=n%8;
    ans+=t+'0';
    n/=8;
  }while(n!=0); 
  reverse(ans.begin(),ans.end());
  cout<< ans; 
}


🌷十进制转成十六进制


💬 代码演示

int main()    
{
  int n;
  cin>>n;     //十进制数 
  string ans="";
  do
  {
    int t=n%16;
    if(t>=0&&t<=9)  ans+=t+'0';
    else ans+=t-10+'a';
    n/=16;
  }while(n!=0); 
  reverse(ans.begin(),ans.end());
  cout<< ans; 
}


🌺每日金句


生活是一面镜子。你对它笑,它就对你笑;你对它哭,它也对你哭


00f1bbbed2bde00c15f23895e0318d1b_225846d0d23d43ac903cfd279e74d01d.png

  本人不才,如有错误,欢迎各位大佬在评论区指正。有帮助的话还请【关注点赞收藏】,不行的话我再努努力💪💪💪



相关文章
|
5月前
2022蓝桥杯大赛软件类国赛真题 卡牌
2022蓝桥杯大赛软件类国赛真题 卡牌
25 0
|
6月前
|
Java 程序员 微服务
学历不够,技术来凑,看八年开发码农如何逆袭进阿里拿年薪百万
有人说,今年可能是过去十年最差的一年,但却是未来十年最好的一年。随着越来越多的知名企业进行大规模裁员,我们不得不承认一个事实:经济寒冬与裁员潮,将是未来常态!
|
算法
【备战蓝桥,冲击省一】 二分查找法 看完你就会了
【备战蓝桥,冲击省一】 二分查找法 看完你就会了
114 1
|
算法 测试技术 C++
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解(二)
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解
155 0
|
算法 测试技术 C++
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解(一)
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解
102 0
|
存储 算法
【备战蓝桥,冲击省一】高精度算法实现加减乘除
【备战蓝桥,冲击省一】高精度算法实现加减乘除
150 0
【备战蓝桥,冲击省一】-- 日期问题
【备战蓝桥,冲击省一】-- 日期问题
94 0
|
存储 人工智能 算法
【2021年蓝桥省赛真题】赛前最后冲刺,省一我来啦
【2021年蓝桥省赛真题】赛前最后冲刺,省一我来啦
338 0
|
测试技术 C++
试题历届真题特别数的和【第十届】【省赛】【B组】(C++)
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。请问,在 1 到 n 中,所有这样的数的和是多少?
234 0
【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可(下)
【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可
233 0
【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可(下)
下一篇
无影云桌面