Posts Tagged ‘geek’

(binary) C10CK app in App Store!

Thursday, May 12th, 2011

My second (personal) iPhone app, C10CK, is now available in the App Store. It is a clock which displays time using binary notation – the same way everything is (eventually) stored in a digital computer. I’ve been using a binary clock since a staff member of ITP passed this past year and several alumni recalled stories of the binary clock she kept on her desk and would happily explain to anyone who asked. I now keep a binary clock on my desk and think of her when people ask me what it is. (more…)

Simple things feel so good. (warning: geekery)

Wednesday, March 4th, 2009

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! :)