Sure, you can truncate and wrap. That's exactly what truncating does!

No, you can't add extra bits magically, but you can perform a binary 'and' operation and get correct results providing ONE of the inputs is within the range (that is, isn't wrapped, or truncated). The other one may be. Wouldn't it be better to define the behaviour this way, than using an undefined function and (at the moment) providing an incorrect answer if one of the inputs is out of range?

"The C Programming Language" by Kerninghan and Ritchie is a good book to read before you go saying stupid things, Darwin_Koala.