> 7 / 2 = 3 is similarly nonsense.
Indeed, which is why decent languages don't do that. Different symbol like // for truncating division if that's what you want.
> How about 5 - 8 = 0? Sensible result for the natural numbers.
Nah. Similarly, don't call that operation -; - underflowing should be an error.
> X + 7? Surely you meant addition modulo 2^64.
Surely you didn't. If your language does that, get a better language.
> What's the count leading zeros on zero?
What's the "count leading zeros" on anything? Numbers don't have leading zeroes (or rather, a number with leading zeroes is equivalent to one without them).
> What's X shifted by word size? Zero? Minus one? X?
No, it's X shifted by word size. (Which is a value bigger than a word, sure).
If you want weird bit-twiddly operations because they're what your hardware implements efficiently, by all means have them. But don't use the standard mathematical symbols for operations that don't have the standard mathematical behaviour. And that includes a "divide" operation that silently accepts 0 and returns some normal value.