进制转换习题

题目:进制转换

解法:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
long long nums, k;

void solution(long long nums, long long k)
{
    vector<int> res;
    while(nums)
    {
        long long curr = nums % k;
        res.push_back(curr);
        nums /= k;
    }
    reverse(res.begin(), res.end());
    for(auto c : res)
        cout << c;
}

int main()
{
    cin >> nums >> k;
    if(nums == 0)
    {
        cout << 0;
        return 0;
    }
    solution(nums, k);
}

### 关于二进制转换的练习题 以下是几个典型的二进制转换习题目,涵盖了不同难度和应用场景: --- #### 题目 1: 基础二进制进制 将以下二进制换为十进制: - `1010` - `1101` 提示:利用位置计数法,每一位上的数值乘以其对应的权重(即 $2^{n}$),其中 n 是该位的位置索引[^1]。 答案: - `1010` 换为十进制为 $1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 0 \times 2^0 = 10$[^5]。 - `1101` 换为十进制为 $1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 13$。 --- #### 题目 2: 十进制进制 将以下十进制换为二进制: - `27` - `45` 提示:通过不断除以 2 并记录余数的方式完成换。 答案: - `27` 的二进制形式为 `11011` (逐步计算过程如下:27 ÷ 2 = 13...1 → 13 ÷ 2 = 6...1 → 6 ÷ 2 = 3...0 → 3 ÷ 2 = 1...1 → 1 ÷ 2 = 0...1)。 - `45` 的二进制形式为 `101101` (逐步计算过程如下:45 ÷ 2 = 22...1 → 22 ÷ 2 = 11...0 → 11 ÷ 2 = 5...1 → 5 ÷ 2 = 2...1 → 2 ÷ 2 = 1...0 → 1 ÷ 2 = 0...1)。 --- #### 题目 3: 二进制十六进制 将以下二进制换为十六进制: - `11010110` - `10111001` 提示:每四位一组分割二进制数,并将其映射到相应的十六进制符号表[^2]。 答案: - `11010110` 可分为 `1101` 和 `0110`,分别对应十六进制中的 `D` 和 `6`,因此结果为 `D6`。 - `10111001` 可分为 `1011` 和 `1001`,分别对应十六进制中的 `B` 和 `9`,因此结果为 `B9`。 --- #### 题目 4: 十六进制进制 将以下十六进制换为二进制: - `A3F` - `C8E` 提示:每位十六进制数字展开为其对应的四位二进制表示。 答案: - `A3F` 展开为 `1010 0011 1111`,去掉空格后为 `101000111111`。 - `C8E` 展开为 `1100 1000 1110`,去掉空格后为 `110010001110`。 --- #### 题目 5: C++ 实现二进制进制程序 编写一段 C++ 程序,输入一个字符串类型的二进制数,输出其对应的十进制值。例如,输入 `"1010"` 输出 `10`。 代码示例: ```cpp #include <iostream> #include <cmath> int binaryToDecimal(const std::string& binary) { int decimalValue = 0; int length = binary.length(); for (int i = 0; i < length; ++i) { if (binary[i] == '1') { decimalValue += pow(2, length - i - 1); } } return decimalValue; } int main() { std::string binaryInput; std::cout << "Enter a binary number: "; std::cin >> binaryInput; int result = binaryToDecimal(binaryInput); std::cout << "The decimal value is: " << result << std::endl; return 0; } ``` 说明:此代码实现了基于位置计数法的二进制进制算法[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值