|


XOR OperationDate: 01/23/2001 at 07:54:17 From: James Subject: XOR The bitwise operator XOR is defined as follows 0 XOR 1 = 1, 0 XOR 0 = 0, 1 XOR 1 = 0. Thus if a = 1001 and b = 1101 then a XOR b = 0100 A 32-bit pattern is being transferred across a network. The four bytes are labelled x1, x2, x3 and x4 where x4 = (x1 XOR x2) XOR x3. If x1 = 01010101, x2 = 10110111, x3 = 00011101, then evaluate x4. If a and b are 8-bit patterns (bytes) then, using your own data, evaluate a XOR (b XOR a)
Date: 01/23/2001 at 11:40:23
From: Doctor Twe
Subject: Re: XOR
Hi James - thanks for writing to Dr. Math.
I take it that it's the XOR operation that's confusing you. Perhaps an
explanation and a few examples would help.
The exclusive-or (XOR) operation is like binary addition, except that
there is no carry from one bit position to the next. Thus, each bit
position can be evaluated independently of the rest.
Suppose we wanted to XOR 1100 and 0101. We could write these two
values below one another like an addition problem:
1100
0101
----
I'll start on the right side, like addition (though it really doesn't
matter with XORing which side you start at). In the rightmost bits we
have a 0 and a 1. 0 XOR 1 = 1, just like 0 + 1 = 1. So we write a 1 in
the rightmost bit of the result:
1100
0101
----
1
Next, we'll look at the second bit. We have a 0 and a 0. 0 XOR 0 = 0,
just like 0 + 0 = 0. So we write a 0 in the second bit of the result:
1100
0101
----
01
For the third bit, we have a 1 and a 1. 1 XOR 1 = 0, but unlike in
addition, there is no carry to worry about. (In binary addition,
1 + 1 = 10, or 0 with a carry of 1.) So we write a 0 in the third bit
of the result:
1100
0101
----
001
Finally, in the leftmost bit, we have a 1 and a 0. 1 XOR 0 = 1, just
like 1 + 0 = 1. So we write a 1 in the rightmost bit of the result:
1100
0101
----
1001
So our final result is 1100 XOR 0101 = 1001. Do you see how that
works?
>A 32-bit pattern is being transferred across a network. The four
>bytes are labelled x1, x2, x3 and x4 where x4 = (x1 XOR x2) XOR x3.
>If x1 = 01010101, x2 = 10110111, x3 = 00011101 then evaluate x4.
Now you should be able to evaluate this. First, XOR the bits in x1
with the bits in x2, then XOR the result with the bits in x4.
>If a and b are 8-bit patterns (bytes) then, using your own
>data, evaluate a XOR (b XOR a)
Try some examples, and see what you come up with. Here's a hint: What
do you get when you XOR a byte with 00000000? What do you get when you
XOR a byte with 11111111? What do you get when you XOR a byte with
itself?
I hope this helps. If you have any more questions, write back.
- Doctor TWE, The Math Forum
http://mathforum.org/dr.math/
|
Search the Dr. Math Library: |
[Privacy Policy] [Terms of Use]


Ask Dr. MathTM
© 1994-2013 The Math Forum
http://mathforum.org/dr.math/