单精度占4个字节,双精度占8个字节,请问这在内存中要怎样表示

如题所述

每个字节8位,4个字节就是32位也,每位有1或0两个值,也就是可以表示2的32次方个数字
8个字节就是64位,就是2的64次方个,
浮点型变量分为单精度(float)、双精度(double)和长双精度(long double)3类。在Turbo C 中:
位数 有效数字
float 32 6-7
double 64 15-16
在计算机中必须有一定的方法来表示和处理小数点。计算机只能识别0和1两种信息,如果用0和1来表示小数点,则势必和数字位相混淆。事实上,对小数点来说,重要的不是小数点本身,而是它的位置。
一个十进制数可写成一个纯小数乘上10的若干次方。相类似,一个二进制数可写成一个纯小数乘上2的若干次方,例如,11.01=22×O.1101。一般地,任一二进制数N(2)可表示成N(2)=2J×s,其中J为二进制整数,s为二进制纯小数。称J为数N的阶码,2为阶码的底,S为数N的尾数。
当用这样的形式表示数时,尾数5表示数Ⅳ的有效数字,阶码J指明了小数点的位置。前者是显然的。后者通过例子来说明。有两个数:N1=201×0.1011,N2=210×0.1011,它们的尾数一样,但阶码不等(此例中阶码为二进制表示)。计算可得N1=1.011,N2=10.1l,可见小数点的位置不同。这说明,两个数尾数相同、阶码不同,则小数点的位置就不同。换言之,尾数不变,阶码发生变化时,小数点的位置就要改变,即阶码指明了小数点的位置。
计算机在具体实现时,有两种不同的做法:一种是J固定,称为定点表示;另一种是J可变,称为浮点表示。
对于定点表示,常用两种方法。一是J取n(n为尾数的位数,即有效数字的位数),机器对写成2n×S的数进行运算,即对纯整数进行运算,这时小数点固定在最低位数字后面。
另一种是J取0,机器对写成20×s的数进行运算,即对纯小数进行运算,这时小数点固定在最高位数字的前面。
对于浮点表示,阶码、尾数都要表示出来,并且都要考虑符号。显然,尾数的符号就是整个浮点数的符号。尾数一般采用原码表示(也可以用补码表示)。为了方便阶码的比较和对阶(即让两个浮点数的阶码变成一致),阶码一般采用移码表示。对n位机器数,移码的定义为
[X]移码=X+2 n-1, 一2 n-1≤X<2 n-1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-16
这个是由实现决定的,不同的实现上有不同的大小.比如int在某些实现上是16位的,有些实现(比如Visual C++)上是32位的.
第2个回答  2011-09-15
如果是说浮点数的实际结构,请参考IEEE754标准的浮点数格式,直接在百度上搜索就有很多资料。
相似回答