Бит сдвинут!
Исходный двоичный файл из 500:
111110100
Сдвиг 4
000011111, что составляет 31!
Original: 111110100
1st Shift:011111010
2nd Shift:001111101
3rd Shift:000111110
4th Shift:000011111 which equals 31.
Это эквивалентноделаю целочисленное деление на 16.
500/16 = 31
500/2 ^ 4 = 31
Некоторые факты взяты отсюда: http://www.cs.umd.edu/class/spring2003/cmsc311/Notes/BitOp/bitshift.html (потому что рявкает из моегоголова приводит к бессмысленному бродяжничеству ... эти люди утверждают, что это намного чище, чем я мог бы)
Сдвиг влево с использованием << приводит к смещению нулей от наименее значимого конца (с правой стороны) и к битамотвалиться от самого значительного конца (левая сторона).</p>
Сдвиг вправо с использованием >> приводит к смещению нулей от старшего значащего конца (левая сторона) и к падению битов с младшего значащего конца (правая сторона), если число не подписано.
Bitshifting не меняет значение смещаемой переменной.Вместо этого создается временное значение с результатом сдвига в битах.