This technique is commonly called "tagged pointer"
http://en.wikipedia.org/wiki/Tagged_pointer
They are commonly used in interpreter implementations to distinguish between pointers and integers (if the LSB is 0 then the value is a pointer, otherwise (v >> 1) is an integer value)