带小数的二进制转16进制c语言
时间: 2023-08-08 13:06:41 浏览: 83
假设小数部分最多有4位,可以使用以下代码将带小数的二进制数转换为16进制数:
```c
#include <stdio.h>
int main() {
double num = 1010.1101; // 要转换的二进制数
int int_part = (int)num; // 取整数部分
double decimal_part = num - int_part; // 取小数部分
int hex_int = 0; // 存放16进制整数部分
double hex_decimal = 0; // 存放16进制小数部分
// 将整数部分转换为16进制
while (int_part != 0) {
int rem = int_part % 16; // 取余数
if (rem < 10) {
hex_int = hex_int * 10 + rem; // 余数小于10,直接存储
} else {
hex_int = hex_int * 10 + (rem - 10 + 'A'); // 余数大于等于10,转换为A-F
}
int_part /= 16; // 更新商
}
// 将小数部分转换为16进制
for (int i = 0; i < 4; i++) {
decimal_part *= 16; // 小数部分乘以16,得到下一位16进制数
int digit = (int)decimal_part; // 取整数部分
decimal_part -= digit; // 更新小数部分
if (digit < 10) {
hex_decimal = hex_decimal * 10 + digit; // 整数部分小于10,直接存储
} else {
hex_decimal = hex_decimal * 10 + (digit - 10 + 'A'); // 整数部分大于等于10,转换为A-F
}
}
// 输出16进制数
printf("%X.%X\n", hex_int, (int)hex_decimal);
return 0;
}
```
输出结果为:```3.5B```,其中3为16进制整数部分,5B为16进制小数部分。
阅读全文