Необязательно. Арифметика (сложение, вычитание) без переноса имеет ту же стоимость в микрооперациях и latency. Типовая стоимость - один исполняющий юнит занимается на 1 такт. Даже можно сказать, сложение в среднем дешевле побитовых операций, потому что побитовые операции всегда идут на арифметический юнит, а сложения могут исполняться как на арифметическом, так и на адресном.
А побитовый сдвиг обычно тяжелее and, or, xor и арифметики: либо он делается за большее количество тактов, либо хуже параллелится (например, некоторые CPU могут исполнять за такт 2 или 4 сложения, но только один сдвиг). Поэтому, например, умножение на 2 лучше делать как add регистра с самим собой, а не как shl на 1. Но при этом шифты почти везде дешевле умножений, а делений надо вообще избегать любой ценой (например, деление на константу заменяется умножением двойной точности на обратную константу с отбрасыванием младших бит результата; если нужно разделить на произведение, то сначала собираем знаменатель, а потом один раз на него делим, а не делим на каждый его множитель отдельно, и т.д.).
Вообще, богатый источник информации - это оптимизирующие компиляторы. Берём, например, gcc с максимальными оптимизациями, и смотрим, какой машинный код он генерирует на какие конструкции. Бывает очень познавательно.
Другие языки программирования и технологии
Побитовые операции - самые "легкие" для компьютера?
Процессор целиком построен на элементарных ячейках, выполняющих битовые операции. И любые команды реализуются в процессоре комбинациями битовых операций. Так что с точки зрения схемотехники и тепловыделения битовые операции действительно самые "лёгкие".
Но целочисленное арифметическое сложение или вычитание можно произвести столь же быстро, как и логическое побитовое сложение - просто аппаратная схема, реализующая арифметические сложение / вычитание будет существенно сложнее.
А вот арифметические умножение / деление - это уже заметно медленнее.
Но целочисленное арифметическое сложение или вычитание можно произвести столь же быстро, как и логическое побитовое сложение - просто аппаратная схема, реализующая арифметические сложение / вычитание будет существенно сложнее.
А вот арифметические умножение / деление - это уже заметно медленнее.
Да, побитовые операции являются одними из самых “легких” для компьютера. Это связано с тем, что они выполняются на уровне процессора и не требуют большого количества вычислительных ресурсов. Они используются для манипулирования отдельными битами в двоичном представлении чисел и могут быть очень эффективными для выполнения определенных задач. Однако, как и любая другая операция, побитовые операции могут быть использованы неправильно и привести к ошибкам в программе. Поэтому важно понимать, как они работают и как их использовать правильно.
Похожие вопросы
- А правда что Ассемблер самый "Быстрый" язык програмирования?
- арифметические и побитовые операции,
- с++ зачем нужны побитовые операции если есть обычные логические операторы?
- Побитовые операции, условие внутри
- Объясните, пожалуйста, что за "много действий"? Нажать на кнопку "Подписаться" - это много действий?
- Pascal, структура данных "Cтек"
- Какой язык программирования вы посоветовали бы "чайнику", чтобы делать сайты под заказ на фрилансе?
- Вопрос о нейросети "Шедеврум" от Яндекса
- Как поднять "title" выше или ниже?
- Чем образование в СССР, в области математики, программирования, алгоритмистики, было лучше/хуже образования "сегодня"?
https://otvet.mail.ru/question/234411253
тут ни чего не подскажите?