(一)64位系统和32位区别?

1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存(因为目前cpu地址总线为34条,条,寻址范围2^10* 2^10* 2^10* 2^4=16G),而32bit只支持4G内存(有32位总线)
2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。

什么是64位处理器?
之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。一次处理的数据越大,该电脑处理信息的能力越来越大;因此64位处理在先天就比32位处理器具有快速的能力。

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个字节

(三)结构体所占内存大小:

为内存优化,一般采用字节对齐。
字节对齐就是变量存储的地址是变量的有效字节对齐值的整数倍,即:
address%最终有效字节对齐值 = 0;
变量字节对齐值
1) 变量的自身字节对齐值
简单类型变量
对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。
结构类型或联合类型:
自身字节对齐值的大小是其成员中最大基本类型要求的有效字节对齐值
2) 编译器要求的字节对齐值:
编译器设置要求的字节对齐值
3) 最终有效的字节对齐值:
在自身字节对齐值和编译器要求的字节对齐值中取较小的。

其实字节对齐的细节和具体编译器实现相关,但一般而言,满足三个准则:
1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除。
2) 结构体每个成员相对于结构体首地址的偏移量都是成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍,如有需要编译器会在成员之间加上填充字节;例如上面第二个结构体变量的地址空间。
3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。

ag.1

typedef struct bb
{int id;             //[0]....[3]double weight;      //[8].....[15]      原则1float height;      //[16]..[19],总长要为8的整数倍,补齐[20]...[23]     原则3
}BB;typedef struct aa
{char name[2];     //[0],[1]int  id;         //[4]...[7]          原则1double score;     //[8]....[15]    short grade;    //[16],[17]        BB b;             //[24]......[47]          原则2
}AA;int main()
{AA a;cout<<sizeof(a)<<" "<<sizeof(BB)<<endl;return 0;
}

ag.2

typedef union {char i; int k[2]; char c;} DATE;
struct data { int cat; DATE cow; char dog;} too;
DATE max;
printf("%d\n",sizeof(too));       //结果为24

共同体中有成员类型 int,所以字节对齐值为4,忽略数组的大小,若为double,字节对齐值为8。

32位和64位系统区别及字节对齐相关推荐

  1. 服务器系统都是64位的吗,云服务器32位跟64位的区别吗

    云服务器32位跟64位的区别吗 内容精选 换一换 Windows操作系统与Linux操作系统没有好坏之分,只有适合不适合.请根据业务需求选择Windows或Linux的操作系统.华为云提供了5个版本, ...

  2. 64 大小_电脑系统32位和64位有什么区别

    众所周知,windows系统有32位和64位,但这两者有什么不同呢?什么样的电脑装什么版本的呢?笔者就简单的来讲一下两者的区别. 一.支持的内存不同 32位的操作系统,最多支持4G的内存,实际内存为3 ...

  3. 计算机操作系统32跟64区别是什么,32位和64位计算机操作系统之间的区别32位和64位win7系统之间的区别...

    32位和64位Win7系统之间的区别是一个古老的话题,但是许多朋友仍然不了解它.两者有什么区别?下面的文章介绍了32位和64位Win7系统之间的区别,以及其他一些深入的理论解释.您可以在文章末尾查看扩 ...

  4. 单片机8位、16位、32位和64位系统在内存上的区别

    总线.内存和变量的相关知识 前言 本篇文章主要介绍单片机内部的总线和内存的一些关系及知识点, 一.32位系统和64位系统的区别 1. 8位.16位.32位和64位CPU的含义 如标题所述,不同位数的单 ...

  5. 【装机吧】Win7电脑系统32位和64位区别(详细版)

    第一点  设计初衷不同: [win7系统32位和64位区别] 64位操作系统的设计初衷是:满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的 ...

  6. 32位和64位操作系统及软件的区别

    下面,我用最简洁的文字尽可能作最详尽的回答:两者之间存在的"五大不同".与此同时,着重说明Microsoft Windows64位(x64)操作系统,相对于32位(x86)操作系统 ...

  7. linux系统32和64的区别,32位和64位的Linux系统区别

    区别之一:当初设计的定位不同 64位操作系统的设计定位是:满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域,这些应用领域的共同特点就是需要有大量的系统内存和浮点性能 ...

  8. 计算机win7几位,Win7 32位与64位有什么区别 Win7系统32位和64位的区别科普篇

    Win7系统分32位和64位版本,很多人在选择32位和64位系统的时候十分纠结,原因是自己的电脑应该安装哪一种版本,那么Win7 32位与64位有什么区别,下面装机之家分享一下Win7系统32位和64 ...

  9. 计算机32位操作系统指什么,电脑操作系统中32位和64位到底有哪些区别?

    电脑操作系统中32位和64位到底有哪些区别?xp系统之后,开始有了Windows7.如果你经常关注,并且安装软件的话,会常常听到32位和64位,这两个有什么区别呢?下面就由小编我来告诉你吧! 1.一般 ...

最新文章

  1. 链表相关的算法题大汇总 — 数据结构之链表奇思妙想
  2. 使用CLONE TABLE方式实现同region不同可用区的MaxCompute
  3. 电脑的虚拟服务器位置,如何配置基于IP地址的虚拟主机
  4. DDD(领域驱动设计)
  5. MySQL创建价格_mysql 建表时的价格用什么类型定义?
  6. node.js 学习书籍推荐
  7. 了解89C51单片机
  8. thoughtworks面试总结
  9. 电脑删除的文件去哪了?删除的数据恢复,居然有3个方法…
  10. RingBuffer
  11. jsp页面读取txt乱码
  12. 用计算机弹出音乐谱,计算器弹歌曲谱子
  13. matlab regress RMSE,在利用regress进行多元线性回归中出现的问题
  14. 机器学习-新闻分类案例
  15. 前海征信“好信杯”大数据算法大赛——入门篇笔记
  16. Arcgis中影像空值NoData处理及去除背景值
  17. 运维自动化之ANSIBLE
  18. java compiler类_Java_Java Compiler 应用实例
  19. ios布局 分为左右两块_iOS 13 隐秘的细节④:系统组件·下
  20. ANSYS渡槽槽身动水压力的施加(1)——矩形渡槽

热门文章

  1. python的pack方法_pack() Method
  2. linux 发送邮件 554,linux – Sendmail:“TLS verify = FAIL”,“554 5.1.8:发件人地址被拒绝:未找到MX记录”...
  3. 【物联网】esp8266 + 物联网平台 + 微信小程序的智能环境监测系统
  4. java ognl表达式_[JavaWeb基础] 029.OGNL表达式介绍
  5. RAM与ROM与CMOS
  6. matlab humoments,应用于数字图像识别的Hu矩缩放不变性分析
  7. 局域网下Windows暴露redis
  8. 网安学习-CTF夺旗
  9. 邮件接收中Postfix、Dovecot、Squirrelmail、MySQL、AMaVis、Clam AntiVirus和SpamAssasin的功能解析
  10. 业内接口虚拟化的厂家(京华科讯,华为,威睿,ORACLE)及特点