二进制转换的代码实现根据转换方向和编程语言有所不同,以下是常见场景的代码示例及说明:
一、十进制转二进制
迭代法(适用于整数) 通过不断取余和整除2,将余数逆序排列得到二进制数。
```java
public class DecimalToBinary {
public static void main(String[] args) {
int num = 23;
StringBuilder binary = new StringBuilder();
while (num > 0) {
binary.insert(0, num % 2);
num /= 2;
}
System.out.println(binary.toString()); // 输出 10111
}
}
```
2. 内置函数法
多数编程语言提供内置函数,如Python的`bin()`函数,直接返回二进制字符串。
```python
num = 23
binary = bin(num)[2:] 去掉前缀 '0b'
print(binary) 输出 10111
```
二、二进制转十进制
通过按权展开求和实现:
```c
include
int binaryToDecimal(char* binary) {
int decimal = 0;
int length = strlen(binary);
for (int i = 0; i < length; i++) {
decimal += (binary[i] - '0') * (1 << (length - i - 1));
}
return decimal;
}
int main() {
char binary;
printf("输入二进制数: ");
scanf("%s", binary);
printf("十进制结果: %dn", binaryToDecimal(binary));
return 0;
}
```
三、二进制转八进制/十六进制
补零填充后分组
将二进制字符串按每3位一组转换为八进制,按每4位一组转换为十六进制。
```python
def binary_to_octal(binary_str):
补零至3的倍数位
binary_str = binary_str.zfill((len(binary_str) + 2) // 3 * 3)
分组并转换
octal = ''.join(str(int(binary_str[i:i+3], 2)) for i in range(0, len(binary_str), 3))
return octal
def binary_to_hex(binary_str):
补零至4的倍数位
binary_str = binary_str.zfill((len(binary_str) + 3) // 4 * 4)
分组并转换
hex_str = ''.join(hex(int(binary_str[i:i+4], 2))[2:] for i in range(0, len(binary_str), 4))
return hex_str
示例
binary = "1101010"
print(f"八进制: {binary_to_octal(binary)}") 输出 152
print(f"十六进制: {binary_to_hex(binary)}") 输出 D2
```
四、其他注意事项
输入验证: 转换前需验证输入格式,避免溢出(如32位整数最大值)。 负数处理
浮点数转换:需单独处理小数部分,可先转换为整数部分再处理小数部分。
以上代码示例覆盖了常见场景,可根据具体需求选择实现方式。