二进制转换方法可分为整数和小数部分,具体如下:
一、二进制转十进制
整数部分 从高位到低位依次计算:
$$
text{结果} = sum_{i=0}^{n-1} b_i times 2^i
$$
例如:二进制 `1100101` 转换为十进制:
$$
1 times 2^6 + 1 times 2^5 + 0 times 2^4 + 0 times 2^3 + 1 times 2^2 + 0 times 2^1 + 1 times 2^0 = 101
$$
小数部分
从左到右依次计算:
$$
text{结果} = sum_{i=1}^{infty} d_i times 2^{-i}
$$
例如:二进制 `0.11` 转换为十进制:
$$
0.11_2 = 1 times 2^{-1} + 1 times 2^{-2} = 0.5 + 0.25 = 0.75
$$
二、十进制转二进制
整数部分
- 除2取余法: 不断除以2,记录余数并逆序排列。例如: $$ 101 div 2 = 50 text{余} 1 50 div 2 = 25 text{余} 0 25 div 2 = 12 text{余} 1 12 div 2 = 6 text{余} 0 6 div 2 = 3 text{余} 0 3 div 2 = 1 text{余} 1 1 div 2 = 0 text{余} 1 $$ 余数逆序排列得到 `1100101`。 - 短除法
小数部分 - 乘2取整法:
不断乘以2,记录整数部分并顺序排列。例如:
$$
0.75 times 2 = 1.5 text{取整数} 1
0.5 times 2 = 1.0 text{取整数} 1
$$
结果为 `0.11`。
三、工具与编程实现
Excel:使用 `DEC2BIN` 函数(如 `=DEC2BIN(A2)`)。
Java:使用 `Integer.toBinaryString(num)` 等方法。
其他工具:Mathtool、在线转换器等。
四、注意事项
二进制转十进制时,位数对齐(如补零)。
编程中需注意数据类型转换(如Java的 `Integer` 类限制)。