Особенности языка mql5, тонкости и приёмы работы - страница 302
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему побитовая операция приводит к созданию int-переменной?
Как дешево делать побитовые операции?
Просьба пояснить с побитовыми операциями.
Это правильно?
ЗЫ Перенес в эту ветку, т.к. она autotranslate.
Это правильно?
Да, сдвиг арифметический, код дополнительный.
0xFFFFFFFF сколько не сдвигай, 0xFFFFFFFF и останется.
https://www.mql5.com/ru/docs/basis/operations/bit
Почему побитовая операция приводит к созданию int-переменной?
Никакого объяснения!
Ошибка (?!) проявляется ТОЛЬКО в промежуточных результатах (для всех побитовых операторов).
Однако присваивание (Num >>= 1) работает, как и ожидалось (к счастью).
Да, сдвиг арифметический, код дополнительный.
0xFFFFFFFF сколько не сдвигай, 0xFFFFFFFF и останется.
https://www.mql5.com/ru/docs/basis/operations/bit
Спасибо, пропустил при прочтении справки.
Никаких объяснений!
Ошибка (?!) проявляется ТОЛЬКО в промежуточных результатах (для всех побитовых операторов).
Однако присваивание (Num >>= 1) работает, как и ожидалось (к счастью).
Все интегральные подтипы int обрабатываются внутри как int.
Все интегральные подтипы int внутри обрабатываются как int.
Побитовые операторы преобразуют небольшие целые числа (такие как char/uchar) в знаковые int. https://stackoverflow. com/a/28142065
Интегральные преобразования небольших целых чисел имеют побочные эффекты, о которых следует знать. В следующем примере значение uchar/char может быть сдвинуто влево больше, чем его ширина (<< больше 8 бит).
Существует также другая проблема с побитовыми операторами(знаковыми типами):
При выполнении побитовых операций, если вы хотите получить строго определенный (в соответствии со стандартом) результат, вы должны убедиться, что значения, с которыми производятся операции, являются беззнаковыми. Это можно сделать либо с помощью явного приведения, либо используя явно беззнаковые константы (U-суффикс) в бинарных операциях.
Все интегральные подтипы int обрабатываются внутри как int.
Спасибо.