# [Tutor] Strange operator

Marilyn Davis marilyn at deliberate.com
Fri Nov 5 00:11:39 CET 2004

```On Thu, 4 Nov 2004, Chad Crabtree wrote:

> I was perusing the wax sourcecode and ran accross this
>         style |= styles.frame(kwargs)
>         style |= styles.window(kwargs)
>
> the pipe-equal operator is something I've never seen this before,
> after
> a little searching I found this
>
> Bitwise OR              *|*        1 if lhs bit OR rhs bit = 1

It is totally cool.

If you have a bit pattern, x =  10101100
And a mask,                m =  00000010
Then x |= m turns *on*          10101110
any bit in x that has
a 1 in m -- leaving the rest of x in tact.

Similarly,
If you have a bit pattern, x =  10101100
And a mask,                m =  11111011
Then x &= m turns *off*         10101011
any bit in x that has
a 0 in m -- leaving the rest of x in tact.

Coolest is ^, the exclusive or.  1 ^ 0 = 1
1 ^ 1 = 0
0 ^ 0 = 0

If you have a bit pattern, x =  10101100
And a mask,                m =  00000110
Then x ^= m turns *toggles*     10101011
any bit in x that has
a 0 in m -- leaving the rest of x in tact.

This is the basis of encryption!  If x is your message and you give
Send the messed-up message to your friend and she can ^= the messed-up
message with the same mask and get back to the original message.

(I hope I didn't make any typos to confuse you!)

Marilyn Davis

>
> http://www.mhuffman.com/notes/language/py_intro.htm#LOGIC
>
> which confuses me even more because I'm not sure how this is useful.
> Could someone please explain this?
>
>
>
>
>
> __________________________________
> Do you Yahoo!?
> Check out the new Yahoo! Front Page.
> www.yahoo.com
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>

--

```