Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chuyển số sang biểu diễn cơ số âm trong C++


Chuyển số nguyên sang biểu diễn cơ số âm (negative base). Chỉ cho phép cơ số từ -2 đến -10.

Ví dụ

n = 9, negBase = -3 → kết quả: "100"

Kiểm tra: 1×(-3)² + 0×(-3)¹ + 0×(-3)⁰ = 9 ✓

Thuật toán

  1. Nếu n=0 trả về "0"
  2. Lặp khi n≠0:
    • remainder = n % negBase
    • n /= negBase
    • Nếu remainder < 0: remainder += (-negBase); n += 1
    • Thêm remainder vào đầu kết quả

Chương trình C++

#include <bits/stdc++.h> 
using namespace std; 

string convert_str(int n) {
    string str;
    stringstream ss;
    ss << n;
    ss >> str;
    return str;
}

string convert_nb(int n, int negBase) {
    if (n == 0) return "0";
    string converted = "";
    while (n != 0) {
        int remainder = n % negBase;
        n /= negBase;
        if (remainder < 0) {
            remainder += (-negBase);
            n += 1;
        }
        converted = convert_str(remainder) + converted;
    }
    return converted;
}

int main() {
    int n = 9;
    int negBase = -3;
    cout << convert_nb(n, negBase);
    return 0;
}

Kết quả

100

Các ví dụ khác

  • 7 cơ số -2: 11011 (1×16 + 1×(-8) + 0×4 + 1×(-2) + 1×1 = 7)
  • 10 cơ số -2: 11110