I'm asking in the spirit of these twoquestions: can bitwise operations (AND, OR, XOR) be expressed in terms of other (more familiar?) functions?

I had been playing around with the bitwise operations in Mathematica a while back, and was at first struck by this identity for bitwise NOT: ~ n == -1 - n (I'll use C-ish notation/syntax for this question, but I'm using Mathematica's definitions, which assume a two's complement representation for negative integers.)

Try as I might, I have not managed to figure out alternative ways of expressing the other bitwise operations. I have also tried Using The Fabulous Search Engine to see if other people have looked into this, but I probably am not using the right keywords.

I have noticed that the implementation of the bitwise operators in Mathematica satisfies de Morgan's theorem:

I suppose then that any alternate expression for the bitwise operators would have to satisfy these identities as well.

(I am not intending to replace the bitwise expressions in actual programming, of course; they are already optimized, and there is really no practical reason to replace them with "more mathematical" expressions. I am asking merely for curiosity's sake.)

@Deb: The discussion there seems to be for fractions; here, I am considering bitwise operations on integers.
–
Guess who it is.Dec 22 '10 at 6:31

1

@J.M.: Note that the formula -1-n for bitwise NOT(n) involves an identity of machine representations rather than of integers, inasmuch as the machine representation of "-1" in twos-complement is the integer $2^w-1$ for suitable word size w. Hence that formula relies on a fixed word size and limited range of values.
–
hardmathDec 22 '10 at 12:15

1

@hardmath: I'm aware that such limitations exist in C and other such languages; I got curious on how Mathematica did it with this snippet: "Bitwise operations in Mathematica in effect allow integers to have an unlimited number of digits. When an integer is negative, it is taken to be represented in two's complement form, with an infinite sequence of ones on the left. This allows BitNot[n] to be equivalent simply to $-1-n$"
–
Guess who it is.Dec 22 '10 at 12:21

1

@Debanjan: Thanks for posting that Google Answers link. It's a write up I did... so many years ago that I would not have recalled doing so!
–
hardmathDec 22 '10 at 13:32

Of course we have the standard 2-complements negation
$$
\bnot a \;=\; -a-1
$$

And assuming we have $\;\band\;$, then $\;\bor\;$ can be derived by the nice
$$
a + b \;=\; (a \band b) + (a \bor b)
$$
(This should be equivalent to DeMorgan's laws, using the above definition of $\;\bnot\;$.)

If you are asking for a simple mathematical identity in addition, subtraction, multiplication and division, then I am afraid that I do not know of any other than those already mentioned. Since you mentioned, however, that you were asking "merely for curiosity's sake", I will attempt to satisfy at least some of that curiosity.

Since bitwise operations are, after all, iterative, there exists for all bitwise operations a sequential sum that, for each given input, returns an identical output to that of the bitwise operation. Unfortunately, these are computationally incredibly expensive, but will serve all the same as a purely mathematical solution.

The mathematical equivalents to right- and left-shifts are already widely known, so I will not repeat them here. The simplest of the sequential sums that I could find, following these, was that of a bitwise NOT. While you have already stated that it can be expressed as $-1 - n$, this is more of a hack exploiting the fact that $-1$ (in 32-bit) is equal to 0xFFFFFFFF (hexadecimal, continuing your precedent of c-style notation). NOT, mathematically, can be expressed as follows:
$$
not(a)=\sum_{n=1}^{\left \lfloor \log_{2}(a) \right \rfloor} \left [ n \left ( 1 - \left ( \left \lfloor \frac{a}{2^{n}} \right \rfloor mod 2 \right ) \right ) \right ]
$$

I will now move fairly quickly through the remaining bitwise operations.

I am aware of the fact that this thread has not seen any activity in a while, but I myself spent some time looking (unsuccessfully) on the internet for this before deciding to work it out myself. Since I did work this out by hand, however, there may be errors in the formulas. If anyone finds any, please let me know of them, and I will attempt to fix them.

Note that I could not find any mathematical way of performing these operations without the use of modulus, floors, ceilings and the sequential additions. If anyone finds any alternative methods of solving these, I would be interested in hearing of them (hypothetically, substitution of the equation for triangular numbers into the sequential sums may be able to simplify them).

Also note that, programatically, the floor and ceiling functions can be replaced by integer operations.

Hopefully somebody, sometime, will find a use for these equations.

In case anybody is wondering, the reason why I put these together was to discover if it is possible to apply calculus to bitwise operations. It may or may not be, depending on whether or not sequential sums, floors, ceilings and modulo operations can be used in calculus.

I may have not expressed myself clearly; I mentioned that bitwise NOT can be re-expressed as $-1-n$ ; are there similar "identities" for the other bitwise operations?
–
Guess who it is.Dec 22 '10 at 5:24