进制转换!

二进制转换为十进制

规则:从最低位(右边)开始,将每个位上的书提取出来,乘以(2的位数-1)次方,然后求和。

例:0b1011 = 11
在这里插入图片描述

八进制转换为十进制

规则:从最低位(右边)开始,将每个位上的书提取出来,乘以(8的位数-1)次方,然后求和。

例:0234 = 156
在这里插入图片描述

十六进制转换为十进制

规则:从最低位(右边)开始,将每个位上的书提取出来,乘以(16的位数-1)次方,然后求和。

例:0x23A = 570
在这里插入图片描述

十进制转换为二进制

规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

例:34= 0b00100010
十进制转换为二进制

十进制转换为八进制

规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。

例:131=0203
十进制转换为八进制

十进制转换为十六进制

规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。

例:237=0xED
十进制转换为十六进制

二进制转换为八进制

规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。

例:0b11010101=0325

011=3;010=2;101=5;

二进制转换为十六进制

规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。

例:0b11010101=0xD5

1101=D;0101=5;

八进制转换为二进制

规则:将八进制数每一位,转成对应的一个三位的二进制数即可。

例:0237=0b010011111

2=010;3=011;7=111

十六进制转换为二进制

规则:将十六进制数每一位,转成对应的一个四位的二进制数即可。

例:0x23B=0b001000111011

2=0010;3=0011;b=1011

### 八进制转换为二进制的方法 将八进制换为二进制数的过程可以通过以下步骤实现: 1. **每一位八进制数字换为三位二进制数**:由于八进制数的每一位范围是0到7,可以将其直接换为对应的三位二进制数。例如,八进制中的`0`对应二进制的`000`,`1`对应`001`,`2`对应`010`,依此类推,直到`7`对应`111`。 2. **拼接所有换后的二进制数**:将每一位八进制换为三位二进制数后,依次拼接起来,即可得到完整的二进制表示。 这种方法的核心在于将八进制数的每一位独立换,无需进行复杂的数学计算,只需要简单的映射和拼接操作[^2]。 ### 示例代码 以下是一个C++实现的示例代码,用于将100位以内的八进制整数换为二进制整数: ```cpp #include <iostream> #include <string> #include <unordered_map> using namespace std; // 八进制到二进制的映射表 unordered_map<char, string> octalToBinaryMap = { {'0', "000"}, {'1', "001"}, {'2', "010"}, {'3', "011"}, {'4', "100"}, {'5', "101"}, {'6', "110"}, {'7', "111"} }; string octalToBinary(const string& octal) { string binary = ""; for (char c : octal) { binary += octalToBinaryMap[c]; } return binary; } int main() { string octal; cout << "Enter an octal number: "; cin >> octal; string binary = octalToBinary(octal); cout << "Binary number: " << binary << endl; return 0; } ``` ### 示例说明 1. **映射表**:定义了一个`unordered_map`来存储八进制数字到三位二进制数的映射关系。 2. **换函数**:`octalToBinary`函数遍历输入的八进制字符串,将每一位换为对应的二进制数,并拼接到结果字符串中。 3. **主函数**:读取用户输入的八进制数,调用换函数,然后输出换后的二进制数。 ### 注意事项 - 输入的八进制数应确保每一位都是合法的(0-7),否则映射表中将找不到对应的二进制值。 - 该方法不涉及复杂的数学运算,仅通过查表和字符串拼接完成换,效率较高,适用于大位数的换需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值