| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 693 人关注过本帖
标题:请教一个关于64 bit变量地址输出的问题
取消只看楼主 加入收藏
lulu9928
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-9-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
请教一个关于64 bit变量地址输出的问题
code如下:
int x = 1;
cout << &x <<endl;

在32 bit情况下输出的地址是0xbffff8cc, 这个我可以理解。可是当我在Macbook的xcode里面运行时(64 bit architecture),输出地址为0x7fff5fbff86c. 我不明白的是64 bit时0x后面不应该有64/4=16位吗?为什么是12位?还是我对概念理解错了?

另外我试过sizeof(&x). 32 bit是4, 64 bit是8. 而0x7fff5fbff86c的size是6啊。
多谢!

[ 本帖最后由 lulu9928 于 2012-9-20 02:19 编辑 ]
2012-09-20 02:09
lulu9928
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-9-20
收藏
得分:0 
回复 2楼 眼底星空
可能我用词不准确,我指的是0x后面的字符个数。我理解64 bit应该是用64/8=8bytes储存一个地址的,所以0x后面应该有16个字符,实际上只有12个,这就是我不明白的地方。
另外我用sizeof(&x)测试的不是x变量的data type size而是储存地址的size.
2012-09-21 02:02
lulu9928
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-9-20
收藏
得分:0 
又搜了一下,在wiki上找到了相关解释:
Larger physical address space: The original implementation of the AMD64 architecture implemented 40-bit physical addresses and so could address up to 1 TB (240 bytes) of RAM.(p24) Current implementations of the AMD64 architecture (starting from AMD 10h microarchitecture) extend this to 48-bit physical addresses and therefore can address up to 256 TB of RAM.
收到的鲜花
  • pangding2012-09-21 20:33 送鲜花  50朵   附言:自己动手,丰衣足食
2012-09-21 02:09
快速回复:请教一个关于64 bit变量地址输出的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036660 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved