浅析·进制转换

进制是什么

进制是按进位方式来技术的的一种规则,那你是几进制就是基数的数制,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,懒得写图片容易理解

好了,讲完了,懂了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值