Попытка перевернуть знаковый бит отрицательного числа, замаскировав его 0x100000000, в корне неверно воспринимается, так как делает жесткие предположения относительно длины слова. В свое время программистом я работал с 24-, 48-, 16-, 18-, 32-, 36- и 64-разрядными числами. Я также слышал о машинах, которые работают на нечетных длинах, таких как 37 и другие, которые используют арифметику с одним дополнением, а не с двойным дополнением. Любые предположения о внутреннем представлении чисел, помимо того, что они являются двоичными, опасны.
Даже двоичное предположение не совсем безопасно, но я думаю, что мы это допустим. :)