Вверх ↑
Этот топик читают: Гость
Ответов: 96
Рейтинг: 1
#1: 2010-11-08 14:56:13 ЛС | профиль | цитата
В одном посте было написано


(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|


Примерно идея такая.



карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#2: 2010-11-08 15:01:32 ЛС | профиль | цитата
И зачем ты написал это в Help?
карма: 10
0
Ответов: 3349
Рейтинг: 233
#3: 2010-11-08 15:11:09 ЛС | профиль | цитата
Ничего сложного не вижу, но вот только зачем?
code_21420.txt
карма: 1

0
файлы: 1code_21420.txt [1KB] [125]
Разработчик
Ответов: 26324
Рейтинг: 2147
#4: 2010-11-08 15:12:02 ЛС | профиль | цитата
А я не понял на чем это реализовывать надо -- схемой или кодом
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#5: 2010-11-08 15:14:21 ЛС | профиль | цитата
если n это исходное число, m - количество бит, на которое требуется его сдвинуть, а h - разрядность этого числа, то циклический сдвиг вправо делается так:
n shl (h - m) or n shr m
карма: 26
0
Ответов: 96
Рейтинг: 1
#6: 2010-11-08 15:51:11 ЛС | профиль | цитата
Ivann писал(а):
Ничего сложного не вижу, но вот только зачем?

Мне это надо, чтобы определить корреляционную функцию псевдослучайной последовательности


nesco писал(а):
А я не понял на чем это реализовывать надо -- схемой или кодом

Можно схемой и кодом.


карма: 0

0
Ответов: 273
Рейтинг: 29
#7: 2010-11-09 07:27:15 ЛС | профиль | цитата
а еще есть команда ROL
карма: 0

0
Ответов: 3349
Рейтинг: 233
#8: 2010-11-09 13:30:34 ЛС | профиль | цитата
tomas писал(а):
а еще есть команда ROL

В нашем MathParser -- Нет.
карма: 1

0
Ответов: 273
Рейтинг: 29
#9: 2010-11-11 19:20:04 ЛС | профиль | цитата
А... а я думал асм... Ну можно в инлайн-скрипте асм вставить - вращение битов одной командой
Хотя там нет асма... Ну тогда дельфи инлайн, а в него вставить асм по всем правилам дельфи...
---upd
перечитал внимательно - тут у вас байты, а не биты крутятся... Сбили меня картинки из 1 и 0
карма: 0

0
Ответов: 8976
Рейтинг: 825
#10: 2010-11-11 20:09:07 ЛС | профиль | цитата
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

0
Ответов: 3349
Рейтинг: 233
#11: 2010-11-11 20:10:53 ЛС | профиль | цитата
Леонид, Читай до конца
tomas писал(а):
Ну тогда дельфи инлайн, а в него вставить асм по всем правилам дельфи...

карма: 1

0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)