之前我整理C盘的时候,看到根目录下有两个文件夹。一个叫Program Files,一个叫Program Files (x86)。
说实话,这两个文件夹一直让我很困惑。今天借着整理的契机,学习一下。为啥Windows要搞两个出来名字一样但用数字区分的文件夹?
先搞懂一个概念:CPU一次能搬多少砖
电脑里的CPU相当于大脑,它干的所有活,本质上就是把一堆0和1搬来搬去做运算。一个0或者1,叫1位。
CPU有个关键指标叫字长,就是它一次能处理多少位的数据。
- 32位CPU:一次处理32个0和1
- 64位CPU:一次处理64个0和1
怎么理解?想象CPU是个搬砖工人。32位的工人每次搬4块砖,64位的每次搬8块砖。搬同样一堆砖,后者需要的回合数少一半。这就是64位跑起来更快的道理。
但这不是最关键的区别。真正让32位退场的是内存。
32位有个致命硬伤:最多认得4G内存
这个得打个比方。你可以把内存想象成一栋大楼,每个房间存一点数据,那房间越多,能存的东西就越多。
32位CPU的问题是,它给房间编号的号码牌只有32位长。能用的号码牌总共就42亿张,发完了就没了。也就是说,它最多只能给42亿个房间编上号,多了它就不认了。
42亿个房间,正好就是4G。
所以如果你往32位系统里插了一根16G的内存条,相当于建了一栋能住16G人的大楼,但CPU手里只攥着4G张门牌号。剩下的12G房间它根本找不到,白建了。
这就是为什么新电脑全是64位。64位CPU的门牌号有64位长,能给171亿G的房间编号,完全够。你插16G、32G甚至64G内存,它都能老老实实认得。
那你肯定会问,既然都64位了,为啥C盘里还留着那个叫x86的文件夹?
为啥搞两个文件夹出来
因为软件不是一夜之间全升级的。
32位先出来,积累了十几年的软件生态。很多老软件厂商觉得升级到64位费钱又麻烦,用户又不抱怨,那我就继续出32位版呗。还有一些软件即使主体是64位,内部某些组件还是32位写的。
但问题来了。64位系统和32位系统需要的一些动态链接库文件,名字一样但内容不同。如果混在一起放,两个版本的软件会互相抢文件,最后全崩。
Windows的解决方案很简单粗暴:强制物理隔离。
- 64位软件 → 装进
Program Files - 32位软件 → 装进
Program Files (x86)(x86是32位架构的老代号)
你不用手动选。安装软件的时候,安装包自己带了判断逻辑,会自动挑正确的文件夹放进去。
那这俩文件夹里分别有啥
我刚查了一下我自己电脑的情况:
Program Files里主要是我常的大软件:Office、微信、Trae、VS Code、Python 这些,都是64位的。
Program Files (x86)里东西多但都不大:一些老版本的驱动、几个没升级的小众工具,还有某些软件带的32位组件。
可以删掉x86里的东西吗
别。
你删一个试试,大概率那个软件就打不开了。它就是为了让32位老软件在64位系统上能跑才存在的,删了相当于把那些软件的地基拆了。
一句话总结
Program Files和Program Files (x86)不是让你选的,是Windows帮你分好家。前者住64位软件,后者住32位老软件。你电脑是64位没错,但为了兼容十几年前的老软件,Windows在64位系统里偷偷开了个翻译层(叫WoW64),让32位软件也能正常跑。
所以下次再看到这俩文件夹不用纠结。该装啥装啥,Windows自己会把它们送对地方。