@nco2k
you guys are way overthinking this.
And yet I notice you still throw nibble swapping into the hat...another example of bit shifting.
It's fun to putter about with this stuff, and the computational cost is very low compared to AES.
The bad news... even after you take all the steps mentioned (and all valid ideas, by the way!)
you're still out of luck.
https is hopelessly insecure, AES has lots of design flaws (not to mention interesting side channel attacks and data leaks due to implementation), the OS provides many huge gaping security holes (but only slightly more than the hardware it runs on) and worst of all: almost all crypto methods are using purposely (or stupidly) reduced key spaces.
In other words, it's basically turtles all the way down.

Still, fun is fun.
@Wilbert
Very nice. One of the principal weaknesses of this method (and any simple xor based method) is that a string of repeating spaces or even a common/known phrase will render a pattern that can be tested for. And you would think that this requires a computer or automated tools, but it doesn't always.
One really useful test is to dump some encoded data and look at it. You'd be amazed at how you can often spot a pattern in ciphered text just by looking at it. Often, that pattern reveals either how it was ciphered, or provides information about the flavor of the cipher. The human brain is pretty sharp... and anything it gets exposed to more than once will start developing tools to classify and work with it - even if you don't mean to. And these skills are often very sophisticated even if we don't put any effort in.
Here's an example of information leakage from the simple stream cipher in my first post:
D3E3F000102030405060708090A0B0C0D0E0F101112
Notice the pattern? Those are spaces - they reveal that the xor key is an incrementing integer.
Rotating the bits and nibble swaps have similar "tells" - information that makes it easier for us to write software to try and crack it, or in many simple cases might give us the ability to solve the problem in our head or by using pencil and paper.
The bit rotating schemes (like all simple schemes) leak information - if you count how many ones and zeros are in each character, regardless of scrambling, you can often tell a) what language it is and b) more easily guess what character it is, or at least narrow it down. This kind of analysis is pretty simple, but perhaps above your average script kiddy cracker.
Now, if you xor the number you use to figure out how to rotate your bits AND you xor your data against some combination of these, you will make it even harder to casually spot the cipher - at a cost of only a few more instructions. Someone wanting to dig into your data will have a harder time yet (if they don't reverse engineer your code) and it will take longer.
For software use, your encryption just has to be resistant to the point that amateurs will give up after a couple hours...or maybe days. When the pain of decoding exceeds the desire/skills of the casual programmer, it's close enough. If you use someone's AES package (as suggested by nco2k, and quite solid advice!) all they have to do is fire-up a debugger, locate the entry point to the AES routine and pull out the key - that's how many DVD and videogame keys got found.
But if you roll your own, spread it out across the program and distribute the decoding algorithm in unexpected places, or perhaps use an intermediate decoding step (leaving partially ciphered text in memory and then decode it as needed...well, even fairly skilled crackers are going to have to invest a little more time to reverse engineer your nonstandard approach.
Your simple bit rotate (with an xor somewhere in there, and maybe a nibble swap like nco2k showed), will be more than enough for most of us. I hate to admit that I don't even know if there's a nibble swap instruction in x86. Also, I suppose escaping for 00/0A/0D/etc. as shown by nco2k would be fine to avoid overhead - I like that a lot and I think it's an acceptable tradeoff to leak a little info if we can decrease the size of the encoded data.
If someone combines all of this, we'll have a very useful routine to drop into our code. If of course, some bright person will write it for us...