| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 693 人关注过本帖
标题:请教一个关于64 bit变量地址输出的问题
只看楼主 加入收藏
lulu9928
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-9-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
请教一个关于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
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
收藏
得分:10 
    64 bit时0x后面不应该有64/4=16位吗?为什么是12位?这是啥意思。。
    你是说0x7fff5fbff86c是12位,那按照这个说法, 0x1是1位,0x01是2位,0x001就是3位?
    0x7fff5fbff86c的size是6,又是怎么来的。。
    真心不懂你是怎么理解位,size的。

    sizeof是和编译器有关的。  
    一般按大家的说法,多数编译器在32位和64位机上,就是在long和指针变量上长度有区别,这两个类型,32位上为4,64位上为8。
    没有具体操作过,你可以试下。
   
   

无为而为 && 每天进步一小点...
2012-09-20 13:13
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
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:10 
4楼 正解。
intel80x64 的架构就地址空间只有48位,最多能寻256T,硬件决定的。
2012-09-21 11:42
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
原来是楼主 自己动手,丰衣足食。而且找到答案还来回馈论坛,值得嘉奖。
2012-09-21 20:32
快速回复:请教一个关于64 bit变量地址输出的问题
数据加载中...
 
   



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

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