Windows and it's applications: what is meant by 16bit, 32 bit, 64 bit?

The title says (asks) it all.

16-bit applications are ancient applications intended to run on Dos and very old Windows versions(before 3.0, I think). “16-bit” refers to the fact that the fact that the processors that the applications were designed for, like the Intel 80286, had registers that could only hold 16-bits(2 bytes). 16-bit applications could only address a maximum of 16 MB of memory, and going over 1 MB wasn’t easy.

32-bit applications were intended for Windows 95 and newer*. They could only be used on the Intel 80386 and newer, which had 32-bit registers. 32-bit applications can use up to 4GB of memory**.

64-bit applications need a 64-bit version of Windows, and require a compatible processor. Registers, as you’ve probably guessed, are 64 bits wide. 64-bit applications can address about 4 billion GB of memory***.

  • I might be wrong about this – some Windows 3.1 applications might have been 32-bit.

** 4GB minus however much address space Windows reserves for itself.

*** The architecture allows for addressing this much. Current processors will limit you to(IIRC) 65536 GB.

If 16-bit were pre- 3.xx, and 32-bit were Win95 onward, what programs were compatible with 3.xx?

You could run some 32 bit applications on Windows 3.x by installing win32s. This was really just a stop-gap until 95 came out.

I am not sure what NT, the true predecessor of XP, could do at the time but I expect it was 32 bit.

3.x was a 16-bit OS, as were Windows 95/98/ME. AFAIK, previous versions were also 16-bit; IIRC, there were never any 8-bit Windows releases. My development experience with Windows goes only back to Windows 3.1 in the 1992-3 timeframe, so my knowledge of Windows/386 and 2.x is a bit lacking.

Windows NT & 2000 are 32-bit, but can run many 16-bit applications. XP/Server 2003/Vista have both 32- and 64-bit versions. Again, the 32-bit versions can run many 16-bit apps, and the 64-bit versions can run most 32-bit apps. I’m not sure if 64-bit Windows can run 16-bit apps, as I haven’t really done much with 64-bit Windows yet, but that will be changing in the near future.

I’m a little fuzzy on when Windows transitioned from 16-bit to 32-bit. 16-bit applications definitely ran on 3.xx. What I’m unsure of is whether new applications designed for 3.xx were 32-bit or 16-bit.

Great username/post combo :slight_smile:

Windows 3.x apps were 16-bit. Windows 3.x had no native 32-bit capacity. Ticker’s mention of Win32s did remind me that Win95/98/ME were called “32-bit”; however, internally, things were still, for the most part, 16-bit. Back in those days, I was doing a lot of system software & drivers, so the internals were of some interest.

Looking back over my 16 years of developing for Windows, it’s pretty amazing how little has changed; a lot of the core API stuff from Windows 3.x is still there, and a lot of the techniques I used back then are still quite valid on the 64-bit platforms. Sure, there’s been a lot of cruft (.Net, I’m looking at you) added over the years, but the basic foundations haven’t changed.

IIRC 95/98/ME were 32 bit but were loaded by a DOS-like 16 bit loader.

Is this something like the Super Nintendo? 8-bit architecture, but a processor capable of 16-bit addressing?

Lots of good stuff on Wikipedia

I don’t really remember the processor architectures of the mid/late 90s. IIRC, we’re talking 386/486 and Pentium, all of which were 32-bit processors.