仮定する、float a = 12.5;
その 16 進表現が であることは知っていますが、プログラム0×41480000
から 16 進表現を出力するにはどうすればよいですか?float
仮定する、float a = 12.5;
その 16 進表現が であることは知っていますが、プログラム0×41480000
から 16 進表現を出力するにはどうすればよいですか?float
float を整数として扱うには、ポインターで型のパニングを使用します。
float a = 12.5;
long *aint = (long *)&a;
printf("0x%lx\n", *aint);
変数を追加するのではなく、キャストだけで行うこともできます。
printf("0x%lx\n", *(long *)&a);
C99以降、%a
基本的にそれを行う指定子があります。仮数を 16 進数と指数で表したものです。ここでの唯一の障害は、double
代わりにfor をfloat
実行することですが、それほど気にする必要はありません。
C でこれを行う合理的な方法は、共用体を使用することです。C 1999 以降では、次の式でこれを行うことができます。
(union { float f; uint32_t u; }) { a } .u
完全なデモンストレーション プログラムを以下に示します。これfloat
には、最新の C 実装で一般的な交換形式の IEEE-754 32 ビット バイナリが必要です。
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
int main(void)
{
float a = 12.5;
printf("%" PRIx32 "\n",
(union { float f; uint32_t u; }) { a } .u);
return 0;
}