c语言二进制转十进制函数,要求可以实现小数和负数的转换,最多32位
时间: 2024-10-02 17:03:38 浏览: 37
十进制数转换为二进制数.txt
在C语言中,你可以通过位操作和循环来实现二进制到十进制的转换。对于整数部分的小数和负数,需要分别处理。下面是一个简单的函数示例,用于将整型或long int类型的二进制表示转换为对应的十进制:
```c
#include <stdio.h>
#include <stdint.h>
// 函数声明
double bin_to_dec(long long binary);
// 十进制转换函数
double bin_to_dec(long long binary) {
// 判断输入是否为负数
if (binary & 0x8000000000000000LL) { // 对于64位系统,最高位为1代表负数
binary = binary ^ 0xFFFFFFFFFFFFFFFFLL; // 取反然后加1得到正数的补码表示
}
double decimal = 0;
for (int i = 0; i < sizeof(binary) * 8; ++i) {
decimal += ((binary >> i) & 1) * pow(2, i);
}
return decimal;
}
int main() {
long long binary = 0b10101010101010101010101010101010; // 示例二进制数值
double decimal = bin_to_dec(binary);
printf("Binary %lld is equal to decimal %lf\n", binary, decimal);
return 0;
}
```
注意这个函数只适用于32位整数(long int)。如果你需要支持更大范围的数值,如64位,你需要调整`sizeof(binary)`和相应的位移操作。
阅读全文