Well, the obvious answer is "well, one begins with an A, one begins with an I....", but that doesn't help you so much.
Both have very similar instruction sets, so that's the main reason that programs can run on both without really that much headache (by 'instruction sets', I mean that the bytes that define an executable program... the bytes need to be translated into instructions, and that translation is done by the processor).
There is a catch though... the two aren't ~entirely~ the same. I think most of the differences in operation lie in some secondary operations (I don't remember the details, but I did look it up once).
I've actually run into a more tangible difference, a few years ago, with an AMD processor. At the time, my uni desktop computer was an AMD K6-2 233MHz computer, which we got for a discount. All seemed OK, but here's the quirk: there was an instruction missing which was used by XviD for decoding the video. Whenever I tried to play an XviD video in VirtualDub, for example, it would crash. Really weird.
After that first semester with that computer, got myself the desktop computer that I'm using now.
"In the beginning there was darkness and void. And then
The Encoder said 'BlankClip(color=$FFFFFF)' and there was
light. The Encoder looked upon the light and saw that it
was good, for it was RGB32."
(although there has been some debate over the Encoder's
choice of container, since Life doesn't support any form
of rewinding.)
--The Darkhold Accord