32-bit, 64-bit. What does it mean?

Hi
I happen to use Xp and Vista 32-bit editions but have never come across a 16-bit OS. I really don't know what this __-bit thing actually means and would like to know. The only other place i came across this is under the display properties>settings tab. There is a drop box with options 16-bit and 32-bit (i know "this" 32-bit gives more colour.). So if I were using a 64-bit OS, then would I have an option with 64-bit colour too? Why are 64-bit OSes not very popular. And are 64-bit versions of Windows (XP & Vista) backwards compatible, ie. can regular software that runs on my system now also run on a 64-bit OS?

I'm gonna give you a short and somewhat incomplete version of the explanation that pertains to home use of computers. For people who actually know a little more about what the story is, you can most definitely skip this post and please try not to nitpick if at all possible. I'm fully aware that it barely scratches the back of the full explanation. :blush:

You should already be aware that your computer uses something we call memory to store data. There are various types of memory but the one most relevant to the 16/32/64 bit issue that is troubling you is the random access memory, also called RAM. This is a special type of memory which is used by the operating system to do its thing. But like any type of memory, before you can write/read a portion of it you need to know where to start your operation. Computers use numbers as addresses for location within their RAM.

For a given computer the size of memory addresses is always the same, kinda like all zip codes within a country are the same size and have the same format. Because of the internal mechanics of computers, the size of the memory addresses is always a power of 2 (notice that 16, 32 and 64 are all powers of 2). The main thing these numbers represent is the size of the memory addresses that the operating system can understand and use.

Why would computers be so silly as not to have a standard address size you ask? Well they did... when PCs first came around no one could wrap their imagination around the memory sizes available today. So they picked what they though was a safe size... namely 16. Operating systems such as DOS and the Windows 3.11 window management system were 16bit OSes.

However, technology progressed and memory sizes increased at a tremendous pace. And before you knew it you could no longer address all of the memory in your computer using only 16 bits. So the industry decided to move to 32 bit addresses. This was a big change that required software vendors, OS vendors and even CPU manufacturers to change the way they did stuff and it happened around the same time that Windows 95 first shipped. And because there was a high demand for the changes everyone was happy to jump on the bandwagon and all was good for a while. You see, going from 16 bit to 32 bit addressing did not double the amount of available addressing space as you may imagine. It raised it from a measly maximum of a few MB to 4 GB. Again, at the time it seemed like a sufficient change and the 4 GB limit was as high as the sky.

However, as you very well know, having 4GB of RAM (or more) is not at all unusual today. Which is why more and more people are starting to use 64 bit OSes. They need special CPUs which can handle addresses that are 64 bit long but these have become almost ubiquitous today.

And that was about it. If you're interested in finer points about the issue (which is a lot more complex than I make it seem here) I'm sure this little pep-talk and google will get you started on the right path.

And if you're still wondering, no, using a 64bit OS will not give you a 64bit colors option. That is an entirely different story with no relation to this one whatsoever.

Edit: I typed so much that I forgot to answer the software questions.

And the answer to that is... it depends. Most applications that were created for a 32bit OS will run just fine on a 64bit OS if they don't try to access memory directly. In modern OSes this is a very unusual thing to do for any application except a device driver. Older games might perhaps not like a 64bit environment but the types of application that would have trouble here are the same type that would have trouble running on 32bit Vista anyway.

And as for the reason why 64bit OSes are not very widespread... well that's a thorny question. One reason is that many apps that everyone uses do not have 64bit versions. MS Office and flash (aka. YouTube, Hulu, etc) are some important examples. hat doesn't mean they won't work on a 64bit OS... but they may have issues and you will most certainly not see any benefits. Since that is what the large majority of Windows users wants to do, there's not a very large demand for 64bit WIndows.
Another, similar, reason is that most people still use Windows XP. And when XP came out it didn't have a 64bit version. In fact I don't think MS created a 64bit version of XP until SP2 which was quite a long time after the initial launch. And because such a large interval had elapsed, 64bit XP had many changes and was not entirely compatible with the 'regular' version of XP. Vista was the first MS OS to ship with a 64bit version at launch but you're probably aware that it didn't get a very warm welcome. Perhaps Windows 7 will change the balance for MS's home clients. The situation is not exactly the same for other platforms and other types of computers (servers for example).

ender,
Thanks for answering all my questions in a manner which I could understand. And this is probably the reason why 32-bt OSes can address upto 4GB RAM and not more. And since 4GB RAM is increasingly becoming common nowadays and is recommended for many of the newer games, do you think it's time to switch to 64-bit software and hardware (so more than 4GB RAM can be used) or is it better to wait for a couple of years (the answer to this might help if someone's planning to build a new system that guarantees years of use without the need to upgrade)?

The 64bit vs 32 bit issue is a bit thorny and I'm not sure I have very good advice about it. I for one have been an early adopter and I've been expecting people to jump on 64bit OSes for years now (mostly for reasons not related to the ability to max out RAM) only to be proven wrong time and time again.

At the moment I'm using the official 64bit Windows 7 RC and I have to admit it has me pleasantly surprised, both by its performance and by the compatibility it has with all kinds of (sometimes rather old and uncommon) apps. It is definitely a step up from XP and Vista and I have a feeling that when 7 is finally released you will no longer see such a huge under-representation for 64bit Windows, at least not in the gamer community.

Be warned though, despite the relatively rosy state of affairs regarding 64bit compatibility, it is possible that some of the apps you used on XP will refuse to work (properly or at all) on 64bit Win 7. For some apps you may have the possibility of upgrading to a newer version (though that may be costly). There's also the XP compatibility mode that may or may not work on your computer, especially if you have an Intel CPU. This depends on factors that I can only label as dumb, random luck (see http://blogs.zdnet.com/Bott/?p=946 for some rather complex and probably useless details on the issue and a very handy CPU compatibility list that includes both desktop and mobile series). If XP compatibility doesn't work for your computer, you will have to either put up with the odd behavior, replace the misbehaving apps with others that are compatible and provide similar functionality, get your hands dirty and use a 32bit virtual machine to run them or simply say goodbye and give them up for good (or at least until they wake their developers up and release a compatible version).

At the moment, I'd be hard pressed to name a single app that is indispensable to me and refused to work on 64bit Win 7 RC. A few free apps did act oddly or refused to install on the Beta, but that was to be expected - it was a brand new Beta and the incompatibility extended to the 32bit version as well. In each of these cases, google immediately offered links to fully compatible, free replacements that provided the same core functionality with a slightly different interface. This means I'm doubtful that you will bump into severe issues... but then again, I have no clue about what your needs are and what apps you use.

MS will release a compatibility check for Windows 7 sometime soon so you will be able to see where trouble might come from before making a decision. If your apps are fully compatible you're one lucky creature and you should probably close your eyes, take a deep breath and jump in - and that goes double if you were contemplating fresh hardware on top of this. If you don't think you're ready (or willing) to get your hands dirty and use on of the aforementioned methods to 'fix' any misbehaving apps then I think it might be better to wait a little longer before upgrading. Also, if you weren't planning on upgrading your hardware soon regardless of the 64bit vs 32bit discussion, I'd say stick with what you have working now until you're ready to get a new machine and then you'll probably be in a much better position to make the jump to 64bit.

hi guys,
This http://www.techspot.com/news/35144-samsung-unveils-first-32gb-ddr3-memory-module.html may be another reason why a new PC buyer may go for 64-bit compatible PCs. Another question - If at present there is 64-bit compatible hardware but not complete software for the same, how would the idea of using 32-bit OS on a 64-bit compatible PC for the time being sound? Would there be any problems and firstly is it possible? And since you has mentioned that you currently are using Windows 7 64-bit edition I think you had a 32-bit OS on the same hardware previously. Do hardware like graphics card, Lan cards, etc also need to be 64-bit compatible (like the processor) or is there no such thing.

There's absolutely no problem whatsoever with running a 32bit OS on 64bit capable hardware, except that you are restricted in how much RAM you actually use and your system could be faster. In fact, this is something you are likely to be doing as we speak if your current computer has been purchased in the past 2 years. The CPU is the only part where there is an issue of compatibility and I think that all new CPUs (both Intel and AMD) have been using 64bit architectures for quite some time now.

And as for as the link you provided - I shudder to think what a motherboard that supports RAM that size (32 GB sticks) would cost, not to mention the cost of the RAM itself. But newegg is quite happy to give you decent RAM already. This looks like a pretty decent buy for a current gaming system and I'm sure getting friendly with newegg's advanced search features will come up with more gems.

Tip: In my experience with building systems, if a computer has enough RAM (and 4GB is more than sufficient for a reasonably powerful computer these days) investing in low latency and high bandwidth memory (with heat spreaders for extra overclocking and reliability) is much more important (aka. gives much better bang for the buck) than dumping more money on a huge amount of RAM that will just draw power and idle for the most part.

I'm not intending to hijack this thread but, does anyone think 128-bit operating systems are in the future? Because I've been seeing the 128-bit memory interface on video cards for a while, and they perform far better. More concurrent memory addresses?

Also I've only been using 32-bit operating systems until now, and I know they are not as fast or powerful as 64-bit ones. The reason I have had was relating to compatibility. Do you lose the ability to use a lot of applications? Would 32-bit applications run in a 64-bit environment?

"Most applications that were created for a 32bit OS will run just fine on a 64bit OS if they don't try to access memory directly." Realistically, what does that mean, no problems whatsoever? BSODs? Are most games 64-bit (i.e. BF2, Crysis, Oblivion)?

I can recall playing a pseudo 64-bit patch that was downloadable for Far Cry some time ago, and I used it on Windows XP 32-bit (I was using the AMD Athlon 64 3500+). Was the 64-bit patch a lie? It seemed to improve the graphics quality. Placebo effect?

I'm not intending to hijack this thread but, does anyone think 128-bit operating systems are in the future? Because I've been seeing the 128-bit memory interface on video cards for a while, and they perform far better. More concurrent memory addresses?

Click to expand...

That is totaly different. 128 offers double the bandwidth of 64 bit, similarly, 256 offers double 128. That is the size of the bus and therefore, the amout data that can be transfered at a time. I suppose it is possible in many years.

"Most applications that were created for a 32bit OS will run just fine on a 64bit OS if they don't try to access memory directly." Realistically, what does that mean, no problems whatsoever? BSODs? Are most games 64-bit (i.e. BF2, Crysis, Oblivion)?

Click to expand...

Most games have 64bit versions.

I can recall playing a pseudo 64-bit patch that was downloadable for Far Cry some time ago, and I used it on Windows XP 32-bit (I was using the AMD Athlon 64 3500+). Was the 64-bit patch a lie? It seemed to improve the graphics quality. Placebo effect?

Click to expand...

If it is a pseudo patch, then i suppose it was fake yes? Otherwise, for an official 64bit patch to help, it would be on a 64bit operation system, running on a 32bit OS will probably be the same. The differences between 32 and 64bit gameplay are neglectable and really don't matter.

Do you lose the ability to use a lot of applications? Would 32-bit applications run in a 64-bit environment?

Click to expand...

I think the quote you quoted and everything ender put so much effort into saying has probably answered, yes.

So, the situation is you have to seek out 64-bit versions for your favorite applications, as the 32-bit equivalent will not work?

If it is a pseudo patch, then i suppose it was fake yes?

Click to expand...

I personally used the word pseudo because that is what I thought of it. "FarCry 64-bit Patch v1.32 Optimized for AMD64" was the actual name of the patch, and upon further research to refresh my memory I found it was designed for Windows XP x64 and could run for whatever reason on a 32-bit XP system with an Athlon 64.

I think the quote you quoted and everything ender put so much effort into saying has probably answered, yes.

Thank you for the clarification hellokitty. I did read what ender said, and my concern was in the quote, that you've now quoted twice.

...if they don't try to access memory directly

Click to expand...

What constitutes direct memory access? I know that will occur in games for sure, but doesn't the occur in every program? Recently Used Data --> RAM --> Paging File? How could any program work if this is true?

I'm sorry for causing you so much heartache by being hand-wavy and imprecise with terms in the previous discussion. I though I made it clear in my first post that this was a very basic discussion intended to give an outline of the issue to users that are not computer savvy and was by no means going to have any technical merit. I'm gonna delve a litle deeper for you but I'm afraid that if you have no experience with programming languages (especially compiled ones) it won't really help you understand much and explaining everything at the same basic level as my previous posts would require writing a very condensed CS course for an introduction.

When I said 'direct memory access' I was referring to programs written in compiled languages (aka. C/C++) that made the error of assuming any given type has the same size across all Windows platforms. Because, historically speaking, this was true for a long time, many (careless, lazy or just uninformed) programmers figured they needn't bother with sizeof in their code because it would work anyway. On top of this, many relied on improper usage of pointer arithmetic to make minor optimizations. These are monumentally bad coding practices that give rise to lots of buffer overflow exploits. However, they were all too common in the 90s (remember all those buffer overflow exploits popping up like mushrooms after a heavy rain?). Because a lot of the code behind apps is library code that was written long before the application there's always a (generally very small) chance that a bit of buggy legacy code found its way unnoticed even in a relatively recent and otherwise well-written app.

Another, related, compatibility issue arises from the use of certain system libraries (dlls) which are markedly different on 32bit and 64bit versions of the same OS. Any by markedly different I mean the 32bit version of a function will have an entirely different prototype than the 64bit version of the same function or that the types/structures used will have different definitions. This can normally be corrected by specifying that you wish the 32bit version to be used for your app even when running in a 64bit environment. However, this behavior is not always possible if an application uses both managed (interpreted, .NET) and unmanaged (compiled, C++) code. At the moment, such issues are only fixable by releasing different versions for 64bit platforms but because the state of 64bit development for Windows is not particularly rosy (debugging in Visual Studio in particular can be a huge pain) some shops will not bother to spend extra resources to release a version for which there is no visible market.

As a developer I've bumped all too often into all of the issues I listed above so I believe me when I tell you they are not fantasies and even the simplest app can be plagued with them if it was written by an improperly trained code monkey. However, there's no way of telling if a given 32bit app will have issues on 64bit without either examining its code thoroughly or simply trying to run it in a new environment. So the entire explanation I just gave you above is entirely useless in figuring out what may or may not work. Which was why I though hand-waving over it was the best thing to do in the first place. :blush:

I am familiar with Visual Basic, and Java, as in the past I have taken courses in them. I understood the gist of what you were saying. I can easily see the DLL libraries being the greatest problem (exploits can be fixed with patches, besides I mainly use mainstream software). Anyways, I've made my decision. In the future, 32-bit Windows 7 it is. Thanks for the explanation, ender!