float型和double型的数在计算机中是怎么存储的?

093jr 2004-09-29 10:27:10
占几个字节,各个字节的值是什么?
...全文
304 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fssf0078 2004-09-29
  • 打赏
  • 举报
回复
ASCII C 好象是说float是4位 double是8位吧
存储的时候好象是按这样的顺序存储的:
符号(1位)+小数点(1位)+有效数字(两种类型规定的有效数字位数)+E(1位)+指数(视编译器而定)
appleangle 2004-09-29
  • 打赏
  • 举报
回复
学习
nicknide 2004-09-29
  • 打赏
  • 举报
回复
有很多标准的,不过一般用的是:IEEE(是这个吗?)标准

最高位是符号位,然后是用移码表示的指数位若干,最后是数据位若干

float的指数好象是8位(-128~127),然后23位是数据位
double就记不清了……
hcj2002 2004-09-29
  • 打赏
  • 举报
回复
找一本《计算机组成原理》原理的书看一下
freefalcon 2004-09-29
  • 打赏
  • 举报
回复
看你的编译环境

VC6下float占4字节,double占8字节
你可以用sizeof( float )测试一下你的环境

至于二者在内存中怎么存储,这比较复杂
学过计算机组成原理(或者计算机文化基础)你就该知道浮点数的表示是比较复杂的
(开会了,不好意思)
nicknide 2004-09-29
  • 打赏
  • 举报
回复
youda1234(风之子)

不同的编译环境下有不同的变化!
float一般占4个字节,精度到小数点后6位
double一般占8个字节,精度到小数点后的10位!
不过,每种机器和环境下是不同的,所以还要看情况决定



错误,应该是不同的CPU有不同的变化,你所说的不同编译环境而有不同,那个是很久远的时候的事情了,那个时候没有FPU,浮点运算都是模拟的,所以和编译环境相关
在现在,因为CPU内部提供浮点运算指令集,所以都是相同的了,如果不同,那么可以说编译器有问题!
还有,我所知道的INTER 和 AMD的浮点数都是那种IEEE标准的,以前微软搞了套自己的标准,结果最后惨淡收场,因为没有谁支持……
sunlu_eric 2004-09-29
  • 打赏
  • 举报
回复
double的精度好象是15位左右吧!
youda1234 2004-09-29
  • 打赏
  • 举报
回复
不同的编译环境下有不同的变化!
float一般占4个字节,精度到小数点后6位
double一般占8个字节,精度到小数点后的10位!
不过,每种机器和环境下是不同的,所以还要看情况决定
nicknide 2004-09-29
  • 打赏
  • 举报
回复
fssf0078():
"ASCII C 好象是说float是4位 double是8位吧
存储的时候好象是按这样的顺序存储的:
符号(1位)+小数点(1位)+有效数字(两种类型规定的有效数字位数)+E(1位)+指数(视编译器而定)"


不对哦,ASCII C没有定义关于浮点的机器标准的,而且存储的时候,那来的小数点和E啊……
float: 1(符号) 8(移码表示的指数) 23(尾数)

楼上的iicup才是正解:

不过对于iicpu有一点小疑问,个人感觉double 的R64.53是不是表示范围还是有些小啊……
不过不想查书了……呵呵
双杯献酒 2004-09-29
  • 打赏
  • 举报
回复
float和double在机内的格式
是由国际标准<IEEE754>规定的.
float使用 R32.24
double 使用 R64.53
liujiansxcd 2004-09-29
  • 打赏
  • 举报
回复
应该是看你具体的机器不同而变化,用sizeof(*)可以查看具体细节。
Lonelywolf1216 2004-09-29
  • 打赏
  • 举报
回复
计算机组成原理

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧