0:08:18pjbjfb4: well, the tag isn't necessarily stored in the same word as the integer bits.
0:09:24pjbjfb4: the tag could be stored in a separate byte, perhaps near the word where the integer is stored, perhaps not. Perhaps it's not even associated directly with the integer, but instead, with the memory page, ie. the address where the integer is stored (integer or other type).
0:13:54pjbjfb4: but it is correct that the X11 protocol is specified leaving the upper 3 bits in its handles set to 0, to make it simple for lisp and other tagged languages to use it. https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#Common_Types
0:15:14pjbjfb4: note that usually tags in fixnums are stored in the lower bits instead, since it makes it more easily to manipulate on a normal 32-bit processor (additions and subtractions can be performed without change, multiplications and division by prefixing or suffixing a shift operation on one of the arguments).