必威体育Betway必威体育官网
当前位置:首页 > IT技术

32位和64位程序的区别

时间:2019-09-03 09:42:08来源:IT技术作者:seo实验室小编阅读:74次「手机版」
 

64位和32位的区别

转自:https://blog.csdn.net/nma_123456/article/details/45077345

由于操作系统内存分配的不同,导致软件开发过程中,需要编译不同版本的软件,此处以VS为例。

1、编译程序根据需要选择不同的编译环境:

X86和win32位32位程序,X64为64位程序,可以选择不同的编辑条件形成不同位的软件。

2、代码中的基本的数据类型,会根据操作系统的位数分配内存大小:

如int型在32位操作系统为4字节,在64位系统为8字节

因此在64位上对int型数据操作,编译生成32的程序,有可能导致int型越界,软件出现问题

3、32位的程序在64位操作系统上运行,由于64位操作系统的寻址和偏移的问题,也有可能导致程序在运行过程中,计算结果与32位系统不一致

4、64位操作系统理论上能够兼容32位和64位软件,32位操作系统不能运行64程序

5、使用vs2010vs2012开发的程序,强制编译为32位软件,在xp系统下运行有问题,有可能与.net framework版本有关系,低版本的framework不能支持高版本framework的一些控件或类库。尝试安装高版本的framework解决问题

借用一下博客内容

一)64位系统和32位有什么区别?

1、64bit cpu拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存

2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。

什么是64位处理器

之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。一次处理的数据越大,该电脑处理信息的能力越来越大;因此64位处理在先天就比32位处理器具有快速的能力。那为什么不用更高级的128位处理器呢?因为位数越高,处理器芯片的设计也就越复杂,目前的技术水平暂时无法制造这么复杂的芯片。

64位处理器之失

硬件———缺乏驱动程序,很多现有硬件无法使用

※软件———操作系统不是问题,但是软件出现不兼容难题

64位处理器之得

※硬件———更快的执行速度,更大的内存管理

※软件———最新的尖端软件首先出现在64位平台

(二)数据类型对应字节数

程序运行平台

不同的平台上对不同数据类型分配的字节数是不同的。

个人对平台的理解是CPU+OS+Compiler,是因为:

1、64位机器也可以装32位系统(x64装XP);

2、32位机器上可以有16/32位的编译器(XP上有tc是16位的,其他常见的是32位的);

3、即使是32位的编译器也可以弄出64位的integer来(int64)。

以上这些是基于常见的wintel平台,加上我们可能很少机会接触的其它平台(其它的CPU和OS),所以个人认为所谓平台的概念是三者的组合。

虽然三者的长度可以不一样,但显然相互配合(即长度相等,32位的CPU+32位的OS+32位的Compiler)发挥的能量最大。

理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。

常用数据类型对应字节数

可用如sizeof(char),sizeof(char*)等得出

32位编译器:

char :1个字节

char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)

short int : 2个字节

int:4个字节

unsigned int : 4个字节

float:4个字节

double:8个字节

long:4个字节

long long:8个字节

unsigned long:4个字节

64位编译器:

char :1个字节

char*(即指针变量): 8个字节

short int : 2个字节

int:4个字节

unsigned int : 4个字节

float:4个字节

double:8个字节

long:8个字节

long long:8个字节

unsigned long:8个字节



相关阅读

品牌和Logo的区别,你真的清楚吗?

Logo是品牌落地的一种外在形式,品牌的学问太多了,我在最近的几个项目中都有很深的体会。不管是前期的风格尝试,情绪版,还是后面落地到

paddingLeft 与 layout_marginLeft 的区别

paddingleft(内边距) 是指对其内部内容的内边距 layout_marginLeft (外边距)是指距离外部的容器的距离 该图片中的第一个是加上  an

图解事件坐标screenX、clientX、pageX, offsetX的区别

一、图解 如图所示,假设页面中灰色圆点是鼠标点击处,黄色区域是鼠标触发事件对象 二、概念 1、screenX 和screenY 参照点:电脑屏

机房UPS系统1+1冗余与2N冗余有什么区别?

机房UPS系统1+1

小红书和淘宝的区别有哪些?

小红书和淘宝的区别有哪些?小红书是最近几年出现在大家视野之中的一个购物平台,短短几年的时间,这个小的电商平台已经成长到一个非

分享到:

栏目导航

推荐阅读

热门阅读