![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Бинарные перестановки
nof © (2004-10-03 23:02:00)Задача Есть 2 бинарных числа: например
1)11001000
2) 110010
Как организовать перестановку из старшего разряда 1 числа в младший 2-ого типа должно получится:
3)1001000 - убрали старший бит
4)1100101 - поставили младший
GuAV (2004-10-03 23:52:00) [1]то есть что я написал неверно, и ваще я что-то зацикливатться на асм стал. Вот так надо:
B:=(B shl 1) or ord((A and $80)<>0);
A:=A and not $80;
если не Byte а Word или LongWord, то соотв маска $8000 или $80000000
GuAV (2004-10-03 23:45:00) [2]Типа так
procedure Z(var A, B: Byte); // можно Word или DWord - что требуется.
asm
RCL [A], 1
SHR [A], 1
RCL [B], 1
end;
DrPass (2004-10-03 23:13:00) [3]a:=11001000 shr 7
b:=(110010 shl 1) or a
KilkennyCat (2004-10-03 23:07:00) [4]Logical (bitwise) operators