在C语言中,二进制转换主要分为 二进制转十进制和 十进制转二进制两种情况。以下是具体实现方法:
一、二进制转十进制
使用位运算符或函数实现,核心步骤为按位与运算和位移操作。
方法1:位运算符实现
```c
include
int bintodeci(char *s) {
int res = 0, sign = 1, i;
char *p;
i = 1;
if (*s == '-') { // 处理负数
sign = -1;
s++;
}
p = s;
while (*p != '0') {
res += (p[i] - '0') * (1 << (7 - i)); // 8位处理
i++;
}
return res * sign;
}
int main() {
char s;
printf("请输入二进制数: ");
gets(s);
printf("十进制结果: %dn", bintodeci(s));
return 0;
}
```
方法2:函数声明实现
```c
include
int transfer(int x) {
int binary = 0;
int p = 1;
while (x > 0) {
binary += x % 2 * p;
x /= 2;
p *= 10;
}
return binary;
}
int main() {
int x;
printf("请输入十进制数: ");
scanf("%d", &x);
printf("二进制结果: %dn", transfer(x));
return 0;
}
```
二、十进制转二进制
整数转二进制 使用 除2取余法
,将余数逆序排列。例如,168转换为二进制为10101000。
小数转二进制
使用 乘2取整法,将整数部分按顺序排列,小数部分无限循环。例如,0.125转换为二进制为0.001。
示例代码(整数转二进制)
```c
include
void decimalToBinary(int n) {
if (n == 0) {
printf("0");
return;
}
int binary = {0};
int index = 0;
while (n > 0) {
binary[index++] = n % 2;
n /= 2;
}
for (int i = index - 1; i >= 0; i--) {
printf("%d", binary[i]);
}
printf("n");
}
int main() {
int num;
printf("请输入十进制数: ");
scanf("%d", &num);
printf("二进制结果: ");
decimalToBinary(num);
return 0;
}
```
三、注意事项
负数处理: 在二进制转十进制时需考虑符号位。 小数转换
位运算效率:位运算符(如`&`、`<<`)在处理二进制转换时效率更高。
以上方法可根据需求选择实现,整数转换推荐使用位运算符或函数声明,小数转换需注意精度限制。