进制转换!

本文详细介绍了二进制如何转为16进制的规则,包括小数点分界、不足四位的补零方法,并阐述了十进制小数转二进制的乘2取整过程。此外,涵盖了原码、反码和补码的概念,以及常见编码如BCD码、余三码和格雷码。

进制转换

补充:将二进制转化为16进制时,以小数点为分界,分别往俩侧按四个四个的取数,最高一组不足四位就补0,小数部分最低一组不满4位也一样,小数部分也是按从左到右来算。

十进制小数转化为二进制小数采取乘2,取整数部位为二进制位置的数。

其他:看书。

二进制运算

加减乘除同十进制一样

原码、反码和补码

正数是在原来的基础上加上符号0,三者一样。

负数的原码是加上符号位1,反码是在原码的基础上取反而符号位不变,反码在补码的基础上加一。

负数二进制数运算利用补码进行运算,得到的结果仍为补码,需将补码转化为原码乃至二进制数。

补码>>>原码:取反+1;-1取反。

几种常见编码:

8421(BCD码)、2421、5211:恒权代码。

余三码:在8421码的基础上加3.

格雷码:看书。

### 八进制转换为二进制的方法 将八进制数转换为二进制数的过程可以通过以下步骤实现: 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、付费专栏及课程。

余额充值