|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Помогите упростить выражение с логическими сдвигами
имеется выражение
Код:
a := (b and ($03 shl (i shl 1))) shr (i shl 1); a - byte; b - Word; i - byte от 7 до 0; Можно ли упростить данное выражение? Програмистами не рождаются, ими становятся! |
#2
|
|||
|
|||
Код:
a := b shr (i*2) and 3; |
Этот пользователь сказал Спасибо x128 за это полезное сообщение: | ||
SCrat.ORS (28.02.2017)
|
#3
|
||||
|
||||
Цитата:
Код:
a := b shr i shr i and 3; Програмистами не рождаются, ими становятся! |
#4
|
|||
|
|||
Умножение на степень двойки компилятор самостоятельно заменит сдвигом, на скорость это не повлияет, а вот читать код будет проще.
|
Этот пользователь сказал Спасибо x128 за это полезное сообщение: | ||
M.A.D.M.A.N. (01.03.2017)
|
#5
|
|||
|
|||
И не бойся ставить скобки. Приоритеты орераций в Delphi очень странные.
|
#6
|
||||
|
||||
Цитата:
Програмистами не рождаются, ими становятся! |