Рассмотрим сдвиг влево:
Пусть у нас было число

, где

, число

отрицательное.
В первом случае, после сдвига влево на

, получаем число

, во втором случае получим cначала число

, затем

, ну а в итоге получим число

.
Числа

и

идентичны. Но предположим, что число

вышло за диапазон от -128 до 127, тогда чтобы получить чему же равно

в представлении компьютера надо прибавить к этому числу

, где

-- некоторое целое число, такое, что

входит в данный диапазон. Если у числа

было переполнение, то и у числа

тоже было переполнение, потому что числа

и

идентичны, проведём с ним ту же самую операцию, в итоге получим равные числа

и

, из этого следует, что 2 данных случая преобразования числа

всегда приводят нас к одному и тому же числу, не зависимо от того, было ли переполнение или нет.
Рассмотрим сдвиг вправо:
Сдвинем то же самое число на

позиций, получим

. Если же сначала взять модуль,

, потом сдвинуть,

, и взять отрицание, получим число

. Числа

и

равны тогда и только тогда, когда

делится нацело на

, в противном случае первое число будет на 1 меньше второго.
Здесь выход значащих бит у числа A, за пределы ячейки так же ничего не поменяет, как только все значащие биты выйдут за пределы ячейки, первое число будет равно -1, а второе 0.
Пример сдвига вправо: было число

, сдвигать будем на 1 позицию, получатся числа

, и

Хотелось бы услышать критику по поводу моих рассуждений
