2^(bitsize) == 0.
Edit: Yes, 1 << bitsize is undefined. But unsigned integers actually do have well-defined semantics on overflow, and multiplying by 2 enough times really does produce zero.
Actually, it's undefined behaviour. http://blog.regehr.org/archives/213 http://blog.regehr.org/archives/213
2^(bitsize) == 2^(bitsize)
If you meant 1 << (bitsize), that's undefined behaviour in C