进制转换
二进制转十进制
#include <iostream> using namespace std; int main() { int a[10], n, i; cout<<"Enter the number to convert: "; cin>>n; for(i=0; n>0; i++) { a[i]=n%2; n= n/2; } cout<<"Binary of the given number= "; for(i=i-1 ;i>=0 ;i--) { cout<<a[i]; } return 0; }
十进制转二进制
不考虑算法实现,我们的思路是什么?
除二倒序取余
算法想实现倒序,那么就可以用栈
stack<int> dec2bin(int num) { stack<int> bin; while (num != 0) { bin.push(num % 2); // 取余并压栈 num /= 2; // 向下取整 } return bin; } int main() { int a = 9; stack<int> stk = dec2bin(a); int len = stk.size(); for (int i = 0; i < len; i++) { int b = stk.top(); cout << b; stk.pop(); } }
十六进制转十进制
直接转是不好转的,手算的原始做法是先转成二进制再转十进制
这个算是非常规做法
int main() { string str; cin >> str; // 利用stringsteam将1进制转为10进制 stringstream ss; // hex是1进制的控制符,8进制是oct ss << hex << str; int num; ss >> num; cout << num; return 0; }
常规做法
int main() { string str; cin >> str; // 前两位0x不要,从后面开始 // 16进制是0-9然后A,B,C,D,E,F int res = 0; // 注意这里是正向的 for (int i = 2; i <str.length(); i++) { int digit; if (isdigit(str[i])) digit = str[i] - '0'; else digit = str[i] + 10 - 'A'; res = res * 16 + digit; } cout<<res; return 0; }
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/16254179.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步