Using XOR to Toggle an Integer Between 1 and 0

Wed, Jun 12
C

If you ever come upon a need to toggle an integer value between 1 and 0, consider using the bitwise exclusive-OR (^) operator in C to get the job done.

In a recent application I wrote a method with one parameter, an integer, that is expected to be 1 or 0. In creating a demo of the application I wanted to pass in alternating values of 1 and 0 as part of a test for a specific use case. Instead of using an if statement in the calling method to decide when to send a 1 or 0, I wrote something similar to the code below:

- (void)someMethod
{
  static int x = 0;
 
  // Toggles 1 to 0 and 0 to 1 using xor
  x ^= 1;
 
  // Call the method that expects a 1 or 0
  [methodCallHere toggle:x];
}

More often than not, exclusive-OR (^), AND (&) and inclusive-OR (|) are consider a bit-level operations (see this post on bitfields). However, there are times when these operators work equally well with integer values.

2 comments

This should have been like day 3 of CS-101.

by tgunr on Jan 6, 2011. Reply #

Is this faster then x = !x ?

by Felix on Jun 8, 2011. Reply #

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>