前言
言归正转,以前只知道指针在32位操作系统下占用4个字节,64位操作系统下占用8个字节。具体为什么也是在秋招中的一场面试中,碰到为什么?也是自己准备不充分从而导致的后果。
一、X86平台下指针为什么占用4个字节?
首先,X86是32位操作系统,其实小编以前也不太清除,对X86和X64一直搞混,下面我写出自己的理解。
x86通常是指32位系统的意思。X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域。x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构。
那么为什么32位操作系统指针就占用4个字节呢?
首先,32位操作系统,也指的是cpu是32位的,计算机主机的组成部分是由CPU和主存储器完成的。
CPU功能主要就是解释计算机指令以及处理计算机软件中的数据,因为CPU不能直接与硬盘去交换数据,只能跟内存去进行数据交换。
那么他是怎么进行交换的呢?通过三条总线的协同合作进行完成。
1.首先,通过地址总线去取数据,X86是32位操作系统,那么地址总线一次可以读32位,也就是4字节,通过这样的方式进行寻址。(地址总线决定CPU能访问的最大内存空间大小)
2.其次,控制总线了解一下读取到的数据是读还是写(控制总线决定CPU对其他元器件的控制能力)
3.最后,数据总线再把数据传输到CPU中,CPU在根据是写还是读,通过运算器进行运算。(数据总线是CPU与内存或其他期间之间的数据传输通道)
总结:
X86是32位操作系统,CPU是32位的,数据宽度也是32位,CPU一次可处理的位数是32位数据,也就是4个字节。
X64是64位操作系统,CPU是64位的,数据宽度也是64位,CPU一次可处理的位数是64位数据,也就是8个字节。
从上面所述可以看出,X64的性能要比X86性能好,因为一次能处理的二进制位数多。
补充:x86是windows操作系统,X64是linux操作系统。
最后回答问题:因为在x86平台下,CPU一次可处理32位数据,也就是能提取的空间就是32位,指针又是存放地址的是一块空间,CPU通过一次提取这一块空间的数据,找到下一块地址所存放的数据,因此X86平台下指针是4个字节。