用代码看32位和64位的区别

今天在昆明某知名学府里,旁听一位大学老师讲软件编程。有一位学生问到,32位编程和64位编程有什么区别,该老师的解答模糊且所有人都没听懂。
这里,我用一种简单的方法来解释区别在哪里。
 
首先声明两个变量。
var
s:pchar;
ss:pchar;

然后赋值
s:='123';
ss:='1';
 
然后查看数据地址
 edit1.Text:=inttostr(integer(s));
 edit2.Text:=inttostr(integer(ss));
你会发现两个地址的值相差是4。

然后再赋值
s:='1234';
ss:='1';
查看数据地址后你会发现两个地址的值相差是8。

然后再赋值
s:='12345';
ss:='1';
查看数据地址后你会发现两个地址的值相差还是8。

然后再赋值
s:='12345678';
ss:='1';

查看数据地址后你会发现两个地址的值相差变成12。
 
为什么呢?我们都知道8位为1个字节,32位即是4个字节。也就是说,32位操作系统,是以4个字节为单位来分配内存,基于32位的编译器,当然也就采用同样的分配方法,而之所有取采这种分法,只是为了取得最佳的工作效率,是根据CPU的处理能力来决定。
 
也就是说,当赋值
s:='123456789012';
ss:='1';
查看数据地址后你会发现两个地址的值相差变成16。
 
我想你已经明白为什么说同频64位CPU会比32位更快了,但是当同频64位CPU执行32位程序时,绝对不会比32位CPU快一丁点。而64位CPU仅仅是在单周期内处理数据长度比32位CPU增加一倍,所以,他们之间的运算速度差距,不会像主频增倍那么多。
 
注:如果s和ss的赋值相同,则他们的数据地址会相同。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值