最近在自学c语言,学到数据和c 其中说:C99为表示浮点常量新添加了一种十六进制格式,并举例: oxa.1fp1

说整个数的十进制值是10364.0
我表示满头雾水。没看懂。

C99 的 p 格式 浮点常量 表示法 比较新,我也没有全部搞懂。
p 格式 类似 e 格式, e格式 1e2 表示 1.0 * (10 的 2次方)= 100.0
p 格式 阶码部分,我尚不清楚 它 是不是 应当等于 2 的阶码次方。

但我知道 0xa.1fp1 这个数 应当分成几部分来看。
0x -- 注意 0 是数字,x 是 字母 x, 表示 下面 的数 是 16 进制。
a.1f -- 也就是 p 以前,0x 以后, 是 带小数点的 16 进制 数。
1 -- p 后部分 是 阶码。
-----------
16 进制 a.1f 化成 十 进制 = 10 + 1.0/16 + 15.0/256 = 10.121094
因为 16 进制 a 等于 十进制 10,16 进制 f 等于 十进制 15, 小数点下第一位 有 1 则 等于 十六分之1, 小数点下第二位 有 1 则 等于 256分之1
----------
10.121094 乘 2 的 10 次方 (即1024)才能得 10364.0
猜测 你漏写了最后一个0: 0xa.1fp10
p10 == 2 的 10 次方 (即1024)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-11
0xA.1Fp1

0x --代表16进制转义符

A.1F --十六进制数值
p --指数符
1 指数,十进制。2的1次方

A.1F
1010.0001 1111 * 2

1 0100.0011 111
每位1换成2的指数,然后相加
=2^4+2^2+2^(-3)+2^(-4)+2^(-5)+2^(-6)+2^(-7)
得十进制值20.2421875,(经验证正确)

值并非10364.0
第2个回答  2013-01-11
没必要深究,就是十进制数10364.0这个数转化成 16进制数 是 oxa.1fp1
相似回答