Автоматическая передача данных вновь созданного файла через SFTP

В C ++ сдвиг только четко определен, если вы смещаете значение меньше шагов, чем размер этого типа. Если int - 32 бита, то определено только 0 до 31 и включает в себя 31 шаг.

Итак, почему это?

Если вы посмотрите на базовое оборудование, которое выполняет сдвиг, если оно должно смотреть только на младшие пять бит значения (в 32-битном случае), оно может быть реализовано с использованием менее логических ворот, чем если бы он должен был проверять каждый бит значения.

Ответ на вопрос в комментарии

C и C ++ предназначены для работы как можно быстрее на любом доступном оборудовании. Сегодня сгенерированный код - это просто команда «сдвиг», независимо от того, как базовое оборудование обрабатывает значения за пределами указанного диапазона. Если бы языки указали, как должен вести себя сдвиг, сгенерированный мог бы проверить, находится ли счет сдвига в диапазоне до выполнения сдвига. Как правило, это дает три инструкции (сравнение, ветвь, сдвиг). (По общему признанию, в этом случае это не было бы необходимо, поскольку количество сдвигов известно.)

0
задан ggggcccssssss 30 March 2019 в 21:25
поделиться