C++中的一个简单的地址问题。

看钱能C++的书,我有个问题不明白。他的书上有句话说,16位机器上,数组的起始地址是0x00000100。对于这句话中的0x00000100,我觉得这台机器的地址应该有3... 看钱能C++的书,我有个问题不明白。
他的书上有句话说,16位机器上,数组的起始地址是0x00000100。
对于这句话中的0x00000100,我觉得这台机器的地址应该有32位嘛,因为0x后面有8位16进制的数,4*8=32.可是,为什么书上说是16位的机器也是这样的地址呢?
就是我不太懂16位机器的地址表示形式和32位机器的地址表示形式的区别。
钱能的那边书只是假设一个地址是0x00000100.他当时是用16位机器。
可是,如果我们把00000100转化为2进制,不是有32位吗?他当时的16位机器是怎么得到这个地址的!
展开
 我来答
百度网友660f3e6
2009-07-20 · TA获得超过666个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:295万
展开全部
书上说的不一定完全正确,要有怀疑精神,尤其是计算机这东西。对于这个问题,“16位机器上,数组的起始地址是0x00000100”这句话本身我觉得就有些误导的成分。我推荐你多看国外的计算机书籍,因为国内的教材一般只讲结果,而不去告诉读者为什么(可能作者也不知道为什么),就像“16位机器上,数组的起始地址是0x00000100”只是个结果,但是为什么是这样?说实话,我也不知道,但是从这个事情我们似乎可以得到一些经验,就是这样的书最好少看。
计算机编程本身就是比较灵活的理科学科,学习的时候应该多思考,祝你好运!
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
millerfor
2009-07-20 · TA获得超过589个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:0
展开全部
我没看过钱能的书,我的理解是这样的:
16位是指寄存器的位数,而不是指寻址位数,因为具体使用的时候,我们是用一个"基址寄存器偏移16位+寻址寄存器"表示一个地址。
由于基址寄存器16位,向左偏移16位,因此地址的位数为32位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
古人生活乐923
2009-07-20 · 超过30用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:90.4万
展开全部
这里的地址和机器硬件无关,Windows是一个32位的操作系统,16位机器上能通过段选择子的方式来实现这个32位的地址,也就是段加段内偏移量
“可是,如果我们把00000100转化为2进制,不是有32位吗?他当时的16位机器是怎么得到这个地址的!”
当时的机器就是通过段选择子来实现的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenliehuo7
2009-07-20 · 超过14用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:36万
展开全部
16为应该是是说CPU内部运算时的,而不是存储器的地址访问空间。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一堂E
2009-07-20 · 超过19用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:40.5万
展开全部
没有人规定数组的起始地址是多少,建议你看看c++的iso标准。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式