Побитовые операторы миграции
Операторы миграции их первый операнд слева (сдвигают<<или right ()>>количество позиций второй операнд определяет).
Синтаксис
перенос-выражение.
добавк-выражениеперенос-выражение <<перенос-выражение добавк-выражения >> добавк-выражение
Оба операнда должны быть целыми значениями.Эти операторы выполняют обычные арифметические преобразования; тип результата тип левого операнда после преобразования.
Для влево биты производит передачу, vacated правое имеет значение 0.Для rightward vacated левые биты заполняются производит передачу, основываясь на типе первого операнда после преобразования.Если тип unsignedони устанавливаются в значение 0.В противном случае они заполняются копиями бита знака.Для операторов лев-переноса без переполнения, оператор
expr1 << expr2
эквивалентны умножению 2expr2.Для операторов, прав-переноса
expr1 >> expr2
эквивалентны отделению 2expr2 If expr1 unsigned или неотрицательное значение.
Результат операции переноса не определен, если второй операнд является отрицательным или если правый операнд больше или равна ширине в битах повышенн уровенього левого операнда.
Поскольку conversions performed операторами миграции не обеспечивают для условий переполнения или потери точности, информация может быть потеряно, если результат операции переноса не может быть представлено в типе первого операнда после преобразования.
unsigned int x, y, z;
x = 0x00AA;
y = 0x5500;
z = ( x << 8 ) + ( y >> 8 );
В этом примере x сдвигает влево и 8 позиций y сдвигает вправо 8 положений.Сдвиганные значения добавляются, предоставляя 0xAA55 и присвоенные z.
Сдвигать отрицательное значение направо создает половину исходного значения вниз с закругленными углами.Например, binary - 253 (11111111 00000011) сдвигали достаточно один бит создают binary - 127 (11111111 10000001).Отрицательный 253 сдвигает вправо для создания +126.
Миграция права сохраняют бит знака.Сдвигает вправо, когда знаковое целое число больше всего-значительно бит остается установить.Если целое число без знака сдвигает достаточно, всего-значительно бит очищен.