> 文档中心 > 备战蓝桥,冲击省一 进制转换 我不允许你还不会

备战蓝桥,冲击省一 进制转换 我不允许你还不会


💟作者简介:大家好,我是Ceylan_,可以叫我CC ❣️    
📝个人主页:Ceylan_的博客
🏆博主信息:平凡的大一学生,有着不平凡的梦

         专栏

  • 备战蓝桥杯   
  • 力扣每日一题
  • 开卷数据结构

⚡希望大家多多支持😘一起进步~❤️
🌈若有帮助,还请关注➕点赞收藏,不行的话我再努努力💪💪💪

目录

🌺其他进制转换成十进制

🌷实现思路

🌷二进制转换成十进制

🌷八进制转换成十进制

🌷十六进制转换成十进制

🌺十进制转换成其他进制

🌷实现思路 

🌷十进制转成二进制

🌷十进制转成八进制

🌷十进制转成十六进制

🌺每日金句


🌺其他进制转换成十进制

🌷实现思路

🔺实现原理

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

🔺算法分析

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

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

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

🌷二进制转换成十进制

💬 代码演示

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='0'&&t<='9') ans=ans*16+t-'0';else ans=ans*16+t-'a'+10;}return ans;}

🌺十进制转换成其他进制

🌷实现思路 

🔺实现原理

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

🔺算法分析

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

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

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

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

🌷十进制转成二进制

💬 代码演示

int main()    {int n;cin>>n;//十进制数 string ans="";do{int t=n%2;ans+=t+'0';n/=2;}while(n!=0);//使用do{}while()以防止输入为 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);//使用do{}while()以防止输入为 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);//使用do{}while()以防止输入为 0 的情况reverse(ans.begin(),ans.end());cout<< ans;}

🌺每日金句

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

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