十进制小数转十六进制(浮点型转16进制)C语言代码+2种方法 您所在的位置:网站首页 C语言10进制转16进制算法 十进制小数转十六进制(浮点型转16进制)C语言代码+2种方法

十进制小数转十六进制(浮点型转16进制)C语言代码+2种方法

2023-08-08 20:15| 来源: 网络整理| 查看: 265

十六进制简介

        十六进制(简写为hex或下标16),在数学中是一种逢16进1的进位制。通常用0-9,a-f(或A-F)表示16个基数,即0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示0-15。如:十六进制数1F,F是个位数表示15,1是十位数表示1个16,那么它转换为十进制数即为31,16+15=31。16进制数是计算机中常用的进数制,比如颜色代码#FFFFFF、Unicode码U+200D等都可用16进制数表示。

十进制转十六进制原理

        十进制小数转十六进制小数,整数部分方法为除十六取余再倒序,小数部分方法为乘十六取整,每次乘以相应之后基数后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为十六进制小数,这时就需要取近似值。

以1234.567为例:

拓展:十进制小数转换为其他进制小数

         十进制小数转换为其他进制的方法与转换为十六进制的方法相同,十进制小数转R进制小数,整数部分方法为除R取余再倒序,小数部分方法为乘R取整,每次乘以相应之后基数后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为R进制小数,这时就需要取近似值。

C语言代码实例

方法一:

#include #include void main() { char integer[32]="0"; char decimal[32]="0"; char HEX[] = "0123456789ABCDEF"; char hex[64]; char hex_temp; int i,j,k = 0; double num, decimal_temp ,integer_temp = 0; printf("输入一个小数:"); scanf("%lf", &num); integer_temp = num; while (integer_temp) { integer[i++] = HEX[(int)integer_temp % 16]; //对十进制数求余并最终与HEX[]数组中的字符匹配 integer_temp = (int)integer_temp / 16; } integer[i]='.'; for(j = i - 1; j-k > 0; j--)//调换整数的16进制顺序 { hex_temp = integer[j]; integer[j] = integer[k++]; integer[i-j-1] = hex_temp; } decimal_temp = num-(int)num; for(i = 0; i < 6;i++)//保留6位有效数字 { decimal_temp = decimal_temp * 16; decimal[i] = HEX[(int)decimal_temp]; decimal_temp = decimal_temp -(int)decimal_temp; if(decimal_temp == 0) { decimal[i+1]='\0'; break; } } strcpy(hex,integer); strcat(hex,decimal); puts(hex); }

验证:在线进制转换工具

方法二:

#include #include #include int main() { char out[20]="0"; char out1[20]="0"; double temp; double data; int integer=0,i=0; double decimal=0; printf("输入一个小数:"); scanf("%lf",&data); integer = (int)data; decimal = data - integer; for(i = 0; i < 10;i++) { decimal = decimal*16; sprintf(out1+i,"%X",(int)decimal); temp = decimal -(int)decimal; decimal=temp; if(temp == 0) { out1[i+1]='\0'; break; } } sprintf(out,"%X.",integer); strcat(out,out1); printf("out=%s\n",out); return 0; }

验证:在线进制转换工具        

IEEE 754标准格式方式存储的浮点转HEX:

符点数(小数)转十六进制C语言代码实例+原理解释(强制类型转换+联合体转换)_xiaohai@Linux的博客-CSDN博客



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有