一、 幂运算 (Exponentiation)

1. 基本定义

幂运算是一种关于幂的数学运算,表示为 ana^n,其中 aa 称为底数 (Base),nn 称为指数 (Exponent)。

  • nn 为正整数时,ana^n 表示 nnaa 相乘:$$a^n = \underbrace{a \times a \times \dots \times a}_{n \text{ 个}}$$
  • 特殊规定
    • 任何非零数的 0 次幂等于 1:a0=1(a0)a^0 = 1 \quad (a \neq 0)
    • 负指数表示倒数:an=1ana^{-n} = \frac{1}{a^n}

2. 核心性质

幂运算是进制转换的数学基础,其核心性质包括:

  • 同底数幂相乘:aman=am+na^m \cdot a^n = a^{m+n}
  • 幂的乘方:(am)n=amn(a^m)^n = a^{mn}

二、 进制展开原理 (Positional Notation Expansion)

1. 基本概念

进制(进位制)是一种记数方式。在 rr 进制系统中,每一位数字所代表的实际数值,不仅取决于该数字本身,还取决于它所处的位置。这个位置对应的价值被称为权重 (Weight)。

2. 展开公式

对于一个任意 rr 进制数,其数值可以通过“按权展开”的方式表示为底数 rr 的幂的线性组合。

假设一个数 NNrr 进制下的表示为:$(d_n d_{n-1} \dots d_1 d_0 . d_{-1} d_{-2} \dots)_r$ 其十进制数值的计算公式为:

N=i=mndiriN = \sum_{i=-m}^{n} d_i \cdot r^i

展开式:

$$N = d_n \cdot r^n + d_{n-1} \cdot r^{n-1} + \dots + d_0 \cdot r^0 + d_{-1} \cdot r^{-1} + \dots$$
  • rr:基数 (Radix/Base),如二进制 r=2r=2,十进制 r=10r=10
  • did_i:第 ii 位上的数码。
  • rir^i:第 ii 位的权重(位权)。

三、 实例演示

1. 十进制 (Base-10) 展开

数字 1234.5 的构成:

  • 1×103=10001 \times 10^3 = 1000
  • 2×102=1002 \times 10^2 = 100
  • 3×101=103 \times 10^1 = 10
  • 4×100=44 \times 10^0 = 4
  • 5×101=0.55 \times 10^{-1} = 0.5 合计1000+100+10+4+0.5=1234.51000 + 100 + 10 + 4 + 0.5 = 1234.5

2. 二进制 (Base-2) 转换为十进制

将二进制数 1101.1 展开:

$$(1101.1)_2 = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 + 1 \times 2^{-1}$$=8+4+0+1+0.5=(13.5)10= 8 + 4 + 0 + 1 + 0.5 = (13.5)_{10}

代码模版

使用场景:

  • 需要求每一个数位上的数字
  • 需要求数字的长度(例如123是3位数字)
#include <iostream>
using namespace std;

int main() {
    long long n;
    cin >> n;

    if (n == 0) cout << 0;
    
    // 逆序输出 (个位 -> 高位)
    while (n > 0) {
        cout << n % 10 << " ";
        n /= 10;
    }

    return 0;
}