进制是什么
进制是按进位方式来技术的的一种规则,那你是几进制就是基数的数制,100个苹果,十进制就是满10进1,二进制就是满2进1,以此类推。每一个数位都是在它的位权处,十进制个位的位权就是10º,十位就是10¹,以此类推
进制的不同:
- 十进制:以10为基数的数制,满十进一,只有0~9几个数码。
- 二进制:以2为基数的数制,满二进一,只有0~1两个数码。
- 八进制:以8为基数的数制,满八进一,只有0~7几个数码。
- 十六进制:以16为基数的数制,满十六进一,有0 ~ 9,A,B,C,D,E,F十六个数码,A ~ F分别表示10 ~ 15。
数制的书写方法
1.字母表示法
再数据后面加上特定的字符,B表示二进制,O表示八进制,D表示十进制,H十六进制,表示11就是:十进制:11D。
2.下标表示法
在数据的右下角写上对应的基数,列如,二进制的11=(11)₂等等。
敲重点-进制转换
1.k进制转十进制,把k进制数的位权展开,求出各个数制的和,就能得到十进制数
写的k转十:
#include <bits/stdc++.h> //头文件
using namespace std;
int k(int a, int l) {
// 检查是否为负数
if (a < 0) {
return a * l - 1; // 负数减1放溢出
}
else {
return a; // 正数直接返回
}
}
int p(const string & str, int l) {
int z = 0;
int g = str.size() - 1; // 从右向左第一位的次方是0,依次递增
for (char c : str) {
// 每位数字对应的十进制值
int s = k(c - '0', l); // 通过ASCII减去'0'得到实际数字
// 加
z += s * pow(l, g);
// 减
g--;
}
return z;
}
int main() {
string m;
int k; // k进制的基数
cout << "请输入k进制数: ";
cin >> m;
cout << "请输入基数k: ";
cin >> k;
// 转换并输出结果
int b = p(m, k);
cout << "十进制转换结果: " << b << "\n";
return 0;
}
2.十转k,短除就行,不多做介绍,把这个数一直除以k,直到除以到0,从低到高写下余数。
3. 2转8,不多说上图片
8转16,懒得写图片容易理解