Why do I have both a “Program Files x86″ and regular “Program Files” folder?

Program Files (x86) vs Program Files

It’s difficult to find a cogent reason why Windows has both a Program Files x86 and traditional Program Files folder.

The two folders seem redundant just like these two sentences.
The two folders seem redundant just like these two sentences.

But seriously: what does that little x86 suffix mean and where it the real location where all your program files live?

In this guide I’m going to delineate the differences between these folders and help you understand why Windows actually needs both of them.

The short answer

Anyone running the 64 bit version of Windows will see both the normal Program Files folder and a new enigmatic folder with an “(x86)” ending.

The funny and somewhat ironic thing about this whole setup is that the term “eighty six”, when used as a verb in American English, is actually a colloquial expression for getting rid of something.  For example, someone might say they “eighty sixed” the project because the CEO yanked the budget.

So I have to ask: Is Microsoft surreptitiously telling us to “eighty six” that mysterious x86 folder?

Good guess but no.

My astute readers may have noticed that those esoteric x86 Program Files folders are only extant in 64 bit versions of Windows.  Every 64bit version of Windows from Windows XP to Windows Server 2012 has dual Program Files folders.

32 bit application are installed in Program Files (x86) but native 64-bit application run in the “normal” Program Files folder.  The x86 version is there for backwards compatibility so that you can run 32bit applications on a 64bit OS.

So you need both  folders and shouldn’t “eighty-six” any of them.

If you’re confounded by all this 86 stuff keep reading and I promise I’ll confuse you a little more.

The long answer

First of all I need to explain the rationale behind why Microsoft bifurcated windows into two bit versions:

  • 32bit
  • 64bit

It all starts with a cute, adorable embryonic - bit.

A bit is the fundamental, bare-bones, most basic unit of information in computing.  It’s either on or off.

The life of a computer is fairly mundane.  To a computer everything is either true or false; which means everything is either one or zero.

On a side note, you might be wondering how we get 1080p HD moves from just one’s and zero’s – and that’s a great wonder but I don’t want to make time to explain that; plus, it’s tangential to this article so I won’t explore it here.

So since a bit is either a 1 or 0, a single bit can be expressed as the number two raised to the 1st power.

In other words, 2 (which represents each state, on or off) and 1 which represents a single bit.

21

With 1 bit you get a total of 2 possibilities.

How many possibilities do you think we can derive from two bits?

Let’s do the math:

22

Two raised to the second power means two multiplied by two.  So we get 4 possibilities with 2 bits.

Now if we keep this trend going you’ll notice that the number of possibilities increases logarithmically with each bit. With each bit that joins the pack, the rate of increase gets steeper and the slope rises faster.

So what happens when you have 32bits?

232 = 4,294,967,296

Okay that’s a big number but who cares? Why is this significant?

Because this means that a 32bit operating system can only provide 4.3 billion unique memory addresses.

This probably sounds like a lot but it actually isn’t.

232 ends up being about 4 billion bytes which is roughly tantamount to 4 Gigabytes.

In other words, if you you’re running the 32bit version of Windows you’re fettered to a maximum of 4gigs of RAM. And even so, because of some complicated issues, Windows won’t let you use the full four gigs.

This is one of the reasons why a 64bit operating system is such a big deal because it means the OS will recognize RAM modules greater than that paltry 4gigs.

264

This is a really really big number: welcome to the world of 64 bit memory addresses.

Making stuff work together

So Microsoft had a little conundrum:

How can we guarantee that older 32bit applications running on 64bit operating systems keep running like normal 32bit applications?

It’s a question of backwards compatibility and the answer hinges on how Windows manages Dynamic Linked Libraries.

What’s the DLL yo?

Windows applications comprise Dynamic Linked Libraries (DLLs) which are basically nuggets of programming code that is shared between applications.

For example, multiple applications might use a common method of interacting with files so by using DLLs, the OS can obviate the need for duplicate files and apportion access to those files in an optimal fashion.

The DLLs are called dynamic because they’re loaded when the program runs (called at Runtime in programming jargon) and can be linked on demand with other applications.  In other words, instead of loading a giant executable into memory, Windows can load just the right piece it needs to accomplish a specific task.

So Microsoft wanted a way to make 64bit programs, specifically 64bit DLLs, work seamlessly with existing 32bit DLLs. But Microsoft needed to avoid the potential quandary of a 32bit DLL trying to load a 64bit DLL and then vomiting up errors.

By segregating 32bit DLLs from 64bit DLLs, Microsoft ensures 32bit applications can happily co-exist on 64bit systems.  The distinct 32bit and 64bit folders make it easy for Microsoft to redirect requests from 32bit applications to 32bit DLLs.

The Bottom Line

64bit versions of Windows use the 86 version of Program Files to maintain backwards compatibility with 32bit applications.

That’s all there is to it.

About

Connect with Vonnie on Twitter

Posted in Windows, Windows 7, Windows 8, Windows 8.1 Tagged with:
  • Dakhamat Mohammad

    if you want to running full performance of cpu and ram use 64bit

  • Don

    I always thought x86 referred to programs that traditionally ran on the old Intel x86 8086, 80186 & 80286 16-bit and most recently 80386 & 80486 32-bit processors. Non 64-bit programs are stored in this directory to keep them separate from 64-bit programs on a machine running a 64-bit OS. It is possible to have two different versions of the same program.

  • Jitendra Sahoo

    awesome article !!!

  • bardy

    try DuplicateFilesDeleter

  • Owen Iverson

    why do they include both x86 and x64 versions of Internet Explorer when you aren’t allowed to set x64 as the default? why would you use one over the other?

Advertisement

Opt In Image
Grab my new eBook before I take it down!
It's 100% free and the download is instant. Here's what you get:
  1. 40 pages of beautiful HD photos featuring solid content on getting the most out of Google Chrome
  2. Learn how to speed up Chrome, stay private online, maximize your mobile experience and more.
  3. Tons of concise Pro-tips scattered throughout the guide; see if you can find them all.
  4. Two special bonus sections near the end of the guide