single,real,double 数据存放的问题

zsy_good 2005-12-19 03:19:39
看看帮助,single是4个字节,可以表达7位整数,8位小数。
证明是整数位有一位给符号位占据了。
single他是怎样放在内存里的?

怎么用内存操作吧他的整数和小数读出来?
real,double也是一样
...全文
448 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsy_good 2005-12-21
  • 打赏
  • 举报
回复
..............
lw549 2005-12-20
  • 打赏
  • 举报
回复
12345.0
改为123456.0
这个是笔误,后面,第二次提到的时候用的是123456.0
zsy_good 2005-12-19
  • 打赏
  • 举报
回复
只看明白了转换成2进制.
然后8个字节一组,逆许排列.
zsy_good 2005-12-19
  • 打赏
  • 举报
回复
看了,不是很明白,他里面的例子
12345.0 ,这个数的2进制总是有问题。我用计算器看的.不是哪个。他的哪个我不知道从那里来的,没有去手动算.
lw549 2005-12-19
  • 打赏
  • 举报
回复
不知道lz看了上面的网址没有:(
lw549 2005-12-19
  • 打赏
  • 举报
回复
补充一句:
浮点数的调试,看fpu窗口
zsy_good 2005-12-19
  • 打赏
  • 举报
回复
我不是要进行浮点数操作,我只是想,通过读取内存数据,来了解浮点的存放格式。
lw549 2005-12-19
  • 打赏
  • 举报
回复
var
d: Double;

d := 1.234;

Add Watch
Pdouble(@d)^

可以显示正确的d
lw549 2005-12-19
  • 打赏
  • 举报
回复
to:教书的

在默认窗口状态,汇编代码下面那个窗口Ctrl+G,输入地址
lw549 2005-12-19
  • 打赏
  • 举报
回复
浮点数运算用fld,fstp等指令可以完成
A = B + C + D;
asm
fld B

fadd C

fadd D

fstp A

end;
g961681 2005-12-19
  • 打赏
  • 举报
回复
还有,就算用了add watch也只能看到值而已啊~
看不到真正的内存里的存储状态啊~
在vc里,可以直接通过地址看到内存中的010101...这些数据的~
g961681 2005-12-19
  • 打赏
  • 举报
回复
但好像没vc中的那种效果,而且在cpu窗口,我好像没找到数据啊!
我用@SingleVar,得到地址后,在cpu窗口里都找不到啊~
Q287413288 2005-12-19
  • 打赏
  • 举报
回复

要作什么,系统本身就有对应的函数来完成你要达到的功能
lw549 2005-12-19
  • 打赏
  • 举报
回复
CPU窗口下可以看到内存中的数据
lw549 2005-12-19
  • 打赏
  • 举报
回复
to: g961681
Add Watch
lw549 2005-12-19
  • 打赏
  • 举报
回复
http://www.zahui.com/html/1/3630.htm
g961681 2005-12-19
  • 打赏
  • 举报
回复
关注此贴~~~~
记得在VC里,在调试状态可以直接根据地址看到内存的数据。
在delphi IDE下没找到~~~
zsy_good 2005-12-19
  • 打赏
  • 举报
回复
delphi,滥久滥在 shr shl,不能用在single上面。
可以用在integer上面。
asm
shr 编译可以通过single类型参数,但是总是得不到结果,奇怪。
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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