Помощь - Поиск - Пользователи - Календарь
Полная версия: Побитовые операции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Лена-
Умножить два положительных числа, не превышающие 16, каждый в двоичной системе. Можно пользоваться только побитовыми операциями.
klem4
function Mult(a, b: Word): LongInt;
var
i, size: Byte;
_result: Integer;
begin
_result := 0;

size := sizeof(a) * 8;

for i := 0 to pred(size) do begin
if Word(Word(b shl (pred(size) - i)) shr pred(size)) = 1 then
inc(_result, a);
a := a shl 1;
end;

Mult := _result;
end;
volvo
blink.gif
    if Word(Word(b shl (pred(size) - i)) shr pred(size)) = 1 then
{ очень просто заменяется на }
if b and (word(1) shl i) = (word(1) shl i) then

. Но скорее всего от сложения _result-а тоже придется избавиться...
klem4
Цитата
Но скорее всего от сложения _result-а тоже придется избавиться...


ага, тоже думал об этом.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.