K> //b — это преобразованный к long результат деления беззнакового a*z на 1000 K> // тоесть 0xfff53bc0 сначала делится на 1000, а потом кастится к знаковому
Я всю жизнь считал, что тип определяется первым операндом умножения (и деления), т.е. тип a*z должен быть long!