学习目标
进制
二进制转十进制
二进制
代码
十进制转二进制
代码
十进制转二进制小数方式,转其他进制同理
二进制转八进制方法二
八进制转二进制方法二
二进制转十六进制方法二
代码
代码
十六进制转换成二进制
n进制转十进制小数部分
练习
[【进制转换】p进制转十进制]
【算法分析】 由于数字 n 可能包含 A∼F 的字符,所以选择以字符串的方式读入 n,然后进行码权积累和。 【参考代码】 #include<bits/stdc++.h> using namespace std; #define ll long long //宏定义 int decode(char c) { if (c <= '9') return c - '0'; return c - 'A' + 10; } int main() { int p; cin >> p; string s; cin >> s; ll ans = 0, power = 1; for (int i = s.length() - 1; i >= 0; i--) { ans += decode(s[i]) * power; power *= p; } cout << ans; return 0; }View Code
[【进制转换】十进制转q进制]
【算法分析】 除 q 取余,逆序排列,不过要注意大于 9 的数字要转换成大写字母。 【参考代码】 #include<bits/stdc++.h> using namespace std; char code(int x) { if (x < 10) return x + '0'; return x - 10 + 'A'; } int main() { int n, q; cin >> n >> q; string ans; do { ans += code(n % q); n /= q; } while (n); reverse(ans.begin(), ans.end()); cout << ans; return 0; }View Code
[【进制转换】数列]
【算法分析】 分析题目可以发现,将 n 看成是二进制数,对于其第 i 位,如果这一位是 1 则答案需要加上 k i 。 【参考代码】 #include<bits/stdc++.h> using namespace std; #define ll long long ll powk[19]; int main() { powk[0] = 1; ll k, n; cin >> k >> n; for (int i = 1; i <= 11; i++) powk[i] = powk[i - 1] * k; ll ans = 0; for (int i = 0; i <= 11; i++) { if (n >> i & 1) { ans += powk[i]; } } cout << ans; return 0; }View Code
本节课作业:
链接:https://pan.baidu.com/s/138FdCET3xeIw0H_aOOQwNg?pwd=3ipm
提取码:3ipm
标签:09,进制,二进制,ll,U6,C++,int,ans,十进制 From: https://www.cnblogs.com/jayxuan/p/18091281