В одном посте было написано
(SHL – логический сдвиг влево, операции применяется только к группе битов, одного из целочисленных типов Паскаля, например к байту, слову и т.д.
Сдвиг байта влево на один разряд.
Разряды B7 B6 B5 B4 B3 B2 B1 B0
До 1 0 0 1 1 1 0 1
После 0 0 1 1 1 0 1 0
Сдвиг байта влево на два разряда.
Разряды B7 B6 B5 B4 B3 B2 B1 B0
До 1 0 0 1 1 1 0 1
После 0 1 1 1 0 1 0 0
Байт смещается влево на один или более разрядов, позиции справа замещаются нулями, позиции слева теряются.)
А можно осуществить циклический сдвиг.
Циклический вправо байта влево на один разряд.
Разряды B7 B6 B5 B4 B3 B2 B1 B0
|1|0|0|1|1|1|0|1|
..___________|
.|
|1|1|0|0|1|1|1|0|
Циклический сдвиг вправо на два разряда.
Разряды B7 B6 B5 B4 B3 B2 B1 B0
|1|0|0|1|1|1|0|1|
.._ ________|_|
..| |
|0|1|1|0|0|1|1|1|
Примерно идея такая.
Этот топик читают: Гость
|
Ответов: 96
Рейтинг: 1
|
|||
| карма: 0 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
И зачем ты написал это в Help?
|
|||
| карма: 10 |
|
|
Ответов: 3349
Рейтинг: 233
|
|||
| карма: 1 |
| ||
| файлы: 1 | code_21420.txt [1KB] [125] |
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
А я не понял на чем это реализовывать надо -- схемой или кодом
|
|||
| карма: 22 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
если n это исходное число, m - количество бит, на которое требуется его сдвинуть, а h - разрядность этого числа, то циклический сдвиг вправо делается так:
n shl (h - m) or n shr m |
|||
| карма: 26 |
|
|
Ответов: 96
Рейтинг: 1
|
|||
|
Ivann писал(а): Ничего сложного не вижу, но вот только зачем?Мне это надо, чтобы определить корреляционную функцию псевдослучайной последовательности nesco писал(а): А я не понял на чем это реализовывать надо -- схемой или кодомМожно схемой и кодом. |
|||
| карма: 0 |
|
|
Ответов: 273
Рейтинг: 29
|
|||
|
а еще есть команда ROL
|
|||
| карма: 0 |
|
|
Ответов: 3349
Рейтинг: 233
|
|||
|
tomas писал(а): а еще есть команда ROLВ нашем MathParser -- Нет. |
|||
| карма: 1 |
|
|
Ответов: 273
Рейтинг: 29
|
|||
|
А... а я думал асм...
Хотя там нет асма... Ну тогда дельфи инлайн, а в него вставить асм по всем правилам дельфи... ---upd перечитал внимательно - тут у вас байты, а не биты крутятся... Сбили меня картинки из 1 и 0 |
|||
| карма: 0 |
|
|
Ответов: 8976
Рейтинг: 825
|
|||
|
tomas,
tomas писал(а): Хотя там нет асма... hiMathParse писал(а): function IntPower(const Base:Extended; const Exponent:Integer):Extended;
asm fld1 { Result := 1 } fld Base test eax,eax jg @@2 fdivr ST,ST(1) { Base := 1 / Base } neg eax jnz @@2 jmp @@3 @@1: fmul ST,ST { X := Base * Base } @@2: shr eax,1 jnc @@1 fmul ST(1),ST { Result := Result * X } jnz @@1 @@3: fstp st { pop X from FPU stack } fwait end; |
|||
| карма: 19 |
|
|
Ответов: 3349
Рейтинг: 233
|
|||
|
Леонид, Читай до конца
tomas писал(а): Ну тогда дельфи инлайн, а в него вставить асм по всем правилам дельфи... |
|||
| карма: 1 |
|
11



Поиск
Друзья
Администрация