Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.90.141] |
|
Сообщ.
#1
,
|
|
|
Привет всем!
Подскажите, как написать процедуры сложения и вычитания двух целых чисел, каждое из которых представлено массивом байтов. Первый байт массива содержит код знака числа: 0 - '+', 225 - '-', а остальные байты- значащие двоичные цифры числа. Cпасибо! |
Сообщ.
#2
,
|
|
|
Маразм, однако, но держи!
Var A, B: array [1..32] of Byte; X, Y: Longint; i: Word; { Функция возвращает 0, если длина массива > 32 элементов } Function BinArr2Long(Data: array of Byte): Longint; Var i: Word; N: Longint; Begin If High(Data) > 31 then BinArr2Long := 0 else Begin N := 0; For i := 1 to High(Data) do N := N * 2 + Data[i]; If Data[0] <> 0 then N := - N End; BinArr2Long := N End; Function BinArrAdd(X, Y: array of Byte): Longint; Begin BinArrAdd := BinArr2Long(X) + BinArr2Long(Y) End; Function BinArrSub(X, Y: array of Byte): Longint; Begin BinArrSub := BinArr2Long(X) - BinArr2Long(Y) End; Begin A[1] := 0; B[1] := 255; For i := 2 to 32 do Begin A[i] := ( 739021645 shr (32-i)) and 1; B[i] := (1407256113 shr (32-i)) and 1 End; X := BinArr2Long(A); Y := BinArr2Long(B); WriteLn('X = ',X); WriteLn('Y = ',Y); WriteLn('X+Y = ',BinArrAdd(A, B)); WriteLn('X-Y = ',BinArrSub(A, B)) End. |
Сообщ.
#3
,
|
|
|
Cпасибо!
Правда спасибо, очень было нужно! |
Сообщ.
#4
,
|
|
|
Пожалуйста!
Правда пожалуйста, очень хотелось помочь! |