在32位处理器上指针的长度为4字节,为什么是4字节,而不是16字节,或者32字节,哪位详细的解释清楚
在32位处理器上指针的长度为4字节,为什么是4字节,而不是16字节,或者32字节,哪位详细的解释清楚...
在32位处理器上指针的长度为4字节,为什么是4字节,而不是16字节,或者32字节,哪位详细的解释清楚
展开
7个回答
展开全部
如果你学过汇编的话就会很清楚了,但是没学过也没关系。首先教你两个名词段地址和偏移地址(物理地址=段地址*16+偏移地址)。段地址和偏移地址都可以由四位十六进制(用十六进制只是为了表示方便,用二进制表示的话太长了)组成如:ffff:0000前面表示段地址后面表示偏移地址,在计算机中每四位二进制可以表示一个十六进制数,那么八位就表示两个十六进制了也就是说两个十六进制数表示一个字节,那么段地址占两个字节偏移地址占两个字节加起来就是四个字节了,而指针变量存放的就是偏移地址和段地址,自然也就是占四个字节了。
展开全部
因为CPU的寄存器是32BIT的
所以对寄存器进行赋值时,最大为32BIT = 4字节
由于汇编中很多计算都是用寄存器来实现的
所以默认指针的长度为32BIT(好象还有短跳指令,对汇编不是太熟悉)
这也是为什么32BIT系统最大寻址范围是4G,WINDOWSXP最多只能认4G的内存条
所以对寄存器进行赋值时,最大为32BIT = 4字节
由于汇编中很多计算都是用寄存器来实现的
所以默认指针的长度为32BIT(好象还有短跳指令,对汇编不是太熟悉)
这也是为什么32BIT系统最大寻址范围是4G,WINDOWSXP最多只能认4G的内存条
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针的值就是一个地址,如0xFFFFFFFF,也就是一个整数int
在32位机器上,int所占的长度为4个字节,所以一个指针所占的也就是4个字节
在32位机器上,int所占的长度为4个字节,所以一个指针所占的也就是4个字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大家都知道最小的单元就是块,这个块是什么多少的定义取决于处理器,最小的单位是bit,一个byte是最小的单元,包含4bit,但是计算机内部有自己的大小对齐的规则,32bit处理器可能是说的这个吧,指针默认会被放入一个标准的符合对齐规则的单元中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为32/8=4
多了,地址总线也容不下!
多了,地址总线也容不下!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询