在C语言中,二进制转换可通过以下两种方式实现:
一、二进制转十进制(推荐方法)
使用位运算符或自定义函数实现,代码示例如下:
方法一:位运算符实现
```c
include
int convertBinaryToDecimal(long long n) {
int decimalNumber = 0;
int i = 0;
while (n > 0) {
int remainder = n % 2;
decimalNumber += remainder * pow(2, i);
n /= 2;
i++;
}
return decimalNumber;
}
int main() {
long long binaryNumber;
printf("输入一个二进制数: ");
scanf("%lld", &binaryNumber);
printf("二进制数 %lld 转换为十进制为 %dn", binaryNumber, convertBinaryToDecimal(binaryNumber));
return 0;
}
```
方法二:自定义函数实现(逐位计算)
```c
include include int convertBinaryToDecimal(long long n) { int decimalNumber = 0; int i = 0; while (n != 0) { int remainder = n % 10; decimalNumber += remainder * pow(2, i); n /= 10; i++; } return decimalNumber; } int main() { long long binaryNumber; printf("输入一个二进制数: "); scanf("%lld", &binaryNumber); printf("二进制数 %lld 转换为十进制为 %dn", binaryNumber, convertBinaryToDecimal(binaryNumber)); return 0; } ``` 二、十进制转二进制
整数部分:
除2取余法
- 示例:168 → 10101000(二进制)
- 代码示例:
```c
include
void decimalToBinary(int n) {
if (n == 0) {
printf("0");
return;
}
int binary = {0};
int index = 31;
while (n > 0) {
binary[index] = n % 2;
n /= 2;
index--;
}
for (int i = index; i >= 0; i--) {
printf("%d", binary[i]);
}
printf("n");
}
int main() {
int decimalNumber;
printf("输入一个十进制数: ");
scanf("%d", &decimalNumber);
decimalToBinary(decimalNumber);
return 0;
}
```
小数部分:
乘2取整法
- 示例:0.125 → 0.001(二进制)
- 代码示例:
```c
include
void decimalToBinary(double n) {
char binary = {0};
int index = 0;
while (n > 0) {
int bit = (int)(n * 2);
binary[index++] = bit % 2;
n -= bit / 2;
}
for (int i = index - 1; i >= 0; i--) {
printf("%d", binary[i]);
}
printf("n");
}
int main() {
double decimalNumber;
printf("输入一个十进制数: ");
scanf("%lf", &decimalNumber);
decimalToBinary(decimalNumber);
return 0;
}
```
说明
二进制转十进制:推荐使用位运算符或自定义函数,代码简洁且效率较高。
十进制转二进制:整数部分采用除2取余法,小数部分采用乘2取整法,需注意精度问题。