Toggle an integer variable between 0 and 1. Useful for a flag to control program flow in C without boolean types.
toggleVar = 1>>toggleVar;
What this is doing is right shifting the integer 1 either zero or one place, depending on the current value of toggleVar.
An 8-bit (unsigned – positive values only) integer has 256 possible values. This is a byte of information whose bits can be represented in binary as 00000000. The least significant bit, the smallest values are on the right…so, 00000001 = 1, 00000010 = 2 … 11111111 = 255.
Ok, this isn’t a binary lesson…so, right shifting is simply moving all the bits to columns to the right. 2>>1 = 1 or, 00000010 >> 1 = 00000001 (which is binary for 1).
The expression at the top does exactly this: When toggleVar is zero, it becomes 1>>0 = 1 and when toggleVar is 1 the expression is 1>>1 = 0. The last bit gets shifted right into oblivion!!! (sorry for that).
Of course, with boolean data types toggleVar = !toggleVar is still shorter, by one char! :)
Leave a Reply
You must be logged in to post a comment.