首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

既然指针在32位里是4byte,那。解决思路

2012-04-16 
既然指针在32位里是4byte,那。。。。。。既然指针在32位里是4byte,即等于32位,范围是0-4294967295.意思就是说32

既然指针在32位里是4byte,那。。。。。。
既然指针在32位里是4byte,即等于32位,范围是0-4294967295.意思就是说32位指针可以在4294967296个byte里分配地址。

假设极端情况:内存每一个byte都分配了一个指针,为了确保每个byte都有指针地址,那32位指针的支持内存的大小是:4294967296/(1024*1024*1024)=3GB
但是现在32位电脑都支持3.25——3.5g的内存,这是为何?
谢谢!

[解决办法]

探讨
既然指针在32位里是4byte,即等于32位,范围是0-4294967295.意思就是说32位指针可以在4294967296个byte里分配地址。

假设极端情况:内存每一个byte都分配了一个指针,为了确保每个byte都有指针地址,那32位指针的支持内存的大小是:4294967296/(1024*1024*1024)=3GB
但是现在32位电脑都支持3.25——3.5g的内存,这是为何?
……

[解决办法]
做为一个程序员,我不相信自己的算笔算。
所以:
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>

#define unit_g (1024*1024*1024)
int main()
{
unsigned int n=UINT_MAX/uint_g;
printf("%u\n", (UINT_MAX-n*unit_g+1)/uint_g+n);
system("pause");
return 0;
}

热点排行