Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Если не трогать пока ассемблер, то для Паскаля (а Вам какой язык ближе?) (сложение беззнаковых любого размера):
Код: Выделить весь код
const
  k = 12;  {12*8=96}
  bit: array[0..7] of Byte = (1,2,4,8,16,32,64,128);
var
  a, b, c: array[0 .. k - 1] of Byte;
  i, j: Byte;
  ost: Boolean;
  a_bit, b_bit: Boolean;
...
  ost := False;
  for i := 0 to k - 1 do begin
    c[i] := 0;
    for j := 0 to 7 do begin
      a_bit := a[i] and bit[j] > 0;
      b_bit := b[i] and bit[j] > 0;
      case Ord(a_bit) + Ord(b_bit) + Ord(ost) of
       {0: }
        1: begin c[i] := c[i] + bit[j]; ost := False end;
        2: ost := True;
        3: begin c[i] := c[i] + bit[j] {; ost := True} end;
      end;
    end;
  end;
  { если здесь ost = true , то у нас переполнение }
end.
в принципе, методика различается в зависимости от того, как хранить данные

Отправлено: 23:03, 15-10-2005 | #6