计算机编码--c语言中输出float的十六进制和二进制编码


  c语言中没有可以直接打印float类型数据的二进制或者十六进制编码的输出格式,

因此,需要单独给个函数,如下:

 1 unsigned int float2hexRepr(float* a){
 2     unsigned int c;  
 3     c= ((unsigned int*)a)[0];  4     return c;
 5 }
 6 
 7 int main(int argc, char const *argv[])
 8 {
 9     printf("%s\n", "== in float representation == ");
10     float f1 = 15213.0;
11     printf("%x\n", float2hexRepr(&f1));
12 }

结果如下:

1 == in float representation ==
2 466db400

为了更好看,打印出二进制:

 1 void hex2binaryStr(unsigned int x, char* str){
 2     unsigned int xCopy = x;
 3     for (int i = 0; i < 32; ++i)
 4     {
 5         str[31 - i] = (xCopy & 1)? '1': '0';
 6         xCopy = xCopy >> 1;
 7     }
 8 }
 9 
10 void printBinary(char* str){
11     for (int i = 0; i < 32; ++i)
12     {
13         printf("%c", str[i]);
14         if (((1+i)%4 == 0) && ((1+i) != 32))
15         {
16             printf("%c", ',');
17         }
18     }
19     printf("\n");
20 }

结果如下:

1 == in float representation ==
2 466db400
3 0100,0110,0110,1101,1011,0100,0000,0000

 

THE END

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM