Целочисленные литералы. Как преобразовывать правильно?
Первоначально заданное число - 268435454. В шестнадцатеричном формате имеет вид 0xFFFFFFE (можете проверить, открыв калькулятор ). Операция сдвига влево для данного случая аналогична операции умножения на два. Применяется эта операция в цикле 4 раза и после каждого сдвига выводится на экран. Т.е. по сути данная программа выполняет умножение на два четыре раза. Отрицательное число получается из-за выхода максимально допустимого числа Int.
Не большой спец в теоретической части, но работу побитового сдвига представляю так:
int x = 4;
1)Берётся двоичное представление числа: 0000 0000 0000 0100
2)И оно тупо сдвигается налево/направо на n-позиций
3)Т.к. каждая единица это 2^(позиция),
происходит грубо говоря умножение/деление на 2(n-раз)