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

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

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

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



相关文章
|
8月前
蓝桥省赛前晚复习数学知识
蓝桥省赛前晚复习数学知识
|
10月前
|
缓存 算法 安全
惊险!备战3个月,五面蚂蚁金服差点倒在最后一面
作为程序员,免不了要经历面试这关,虽然平时工作勤勤恳恳,但是面试上面未必能展示的出来,比如平时都是做增删改查的业务系统,面试官非要问你如何处理高并发大数据,本来是写java代码,非要问你大型网站架构,这些问题防不胜防,本文就自己一次在蚂蚁金服的面试经验来总结一下,抛砖引玉。
|
10月前
|
存储 算法
【备战蓝桥,冲击省一】高精度算法实现加减乘除
【备战蓝桥,冲击省一】高精度算法实现加减乘除
124 0
|
10月前
【备战蓝桥,冲击省一】-- 日期问题
【备战蓝桥,冲击省一】-- 日期问题
67 0
|
10月前
|
算法
【备战蓝桥,冲击省一】 二分查找法 看完你就会了
【备战蓝桥,冲击省一】 二分查找法 看完你就会了
72 1
|
10月前
|
存储 人工智能 算法
【2021年蓝桥省赛真题】赛前最后冲刺,省一我来啦
【2021年蓝桥省赛真题】赛前最后冲刺,省一我来啦
259 0
|
存储 算法 C++
蓝桥杯备战练习 python冲击省一
蓝桥杯备战练习 python冲击省一
91 0
蓝桥杯备战练习 python冲击省一
|
SQL 机器学习/深度学习 前端开发
10个宝藏级编程资源,让你省下8K学费不香吗
10个宝藏级编程资源,让你省下8K学费不香吗
119 0
|
Java
【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可(上)
【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可
153 0
|
算法 大数据 API
【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可(中)
【蓝桥真题3】蓝桥改革变难,想进国赛这些能力你可缺一不可
172 0