double类型哪些位是符号位,指数位,尾数位?

例如表示31742.5621,它是怎么表示的?double型的最小精度是多少?附加提问:C语言里,怎么把两个32位数组成一个double型的数(一个作为另外一个的高32位)。
我知道部分答案,所以不用回答很详细,不懂的话,我再追问,先谢谢了!

IEEE 754 国际标准 规定,double 型 64位。1位“数的符号”,11位“指数位”,52位“有效数位”。
排列:“数的符号”“指数位”“有效数位”
指数位 用 偏正值 表示,即:偏正值 = 实际的指数大小+1023。
31742.5621,它是怎么表示:
请用下面程序打印出它的16进制内容,然后一位拉4位变2进制,在划分为3部分。
#include <stdio.h>
#include <stdlib.h>
typedef union u{
double v;
unsigned char s[8];
} U;
main()
{
U x;
int i;
x.v = 31742.5621;
for (i=0;i<8;i++) printf("%02x",x.s[i]);
}
==
double型精度 14位有效数字。

问:C语言里,怎么把两个32位数组成一个double型的数(一个作为另外一个的高32位)?
C语言不是用这个方法组数的。32位float数 符号1位,指数8位,尾数23位。
要通过运算才行。追问

你的程序很好哎,你是怎么想到的,真厉害!参照你的程序,如果我想把两个三十二位数(ABCD FFFF和10BC 0000)组合起来,是不是可以用这个程序。
#include
#include
typedef union u{
double v;
unsigned int s[2];//假设此处int型是32位,我的DSP的int是16位
} U;
main()
{
U x;
s[0]=0xABCDFFFF; s[1]=0x10BC0000;
printf("%.14f",x.v);
}

追答

对的。
输出 double 型 要用格式 %lf (字母L的小写不能漏)。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-30
 Double(双精度浮点型)是计算机使用的一种数据类型。比起单精度浮点数(float),Double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。 它可以表示十进制的15或16位有效数字,负值取值范围为 -1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308[1]
就是说double用4个字节表示有效数字部分,4个字节表示指数部分
每个部分的最高位是符号位追问

拜托,抄得好点,都五级了,还这样、、、

追答

百度百科有,你为什么不自己搜呢?教科书上也有的,多问些思想性的东西吧

追问

你回答的也不对啊。。。。你看我的问题

相似回答