![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сложение.
Егор © (2002-08-27 18:19:00)Привет. Помогите сложить шестнадцатеричные значения.
01 00 00 00 +
04 00 00 00 +
08 00 00 00 +
00 00 02 00
Результат - 0D 00 02 00
Нужен пример!
Dimk (2002-08-31 23:47:00) [1]А ведь в арифметике еще много других действий -
например умножение, деление...
:0)
drpass (2002-08-31 23:44:00) [2]>Егор
Что можно ответить на такой вопрос...
Попробуй научиться работать хотя бы в Microsoft Word. Delphi для тебя будет сложноватой :)
Юрий Зотов (2002-08-31 23:31:00) [3]> Егор (31.08.02 20:46)
> Ну и как?
Очень просто. Есть такой алгоритм - "гадание на кофейной гуще". Если применить его рекурсивно, то все получится. Главное в этом деле - меньше думать и больше спрашивать.
Алексей Ким (2002-08-31 20:58:00) [4]28-2-5-13=8
28-2-5-8=13
итд
толька скажи мне ты хочешь минимальный шаг то есь 1 или
максимальный то есь само число?
или ты создал прогу у которая развила телепатические способности?
Егор (2002-08-31 20:46:00) [5]
> Теперь даю Вам число - 28. Как получить из него 2, 5, 13
> и 8?
Ну и как?
TTCustomDelphiMaster (2002-08-31 16:59:00) [6]Delirium © (31.08.02 16:28)
А у меня сложилось впечатление что ему нужна операция XOR. Но похоже одному Богу известно что ему нужно:)
Delirium (2002-08-31 16:28:00) [7]Хм, а у меня сложилось впечатление, что ему нужно реализовать алгоритм получения ограниченного множества чисел, дающих в сумме определённое значение.
drpass (2002-08-31 16:24:00) [8]>Егор
Ты просто не понимаешь смысла: число в шестнадцатеричной системе ничем не отличается от числа в десятичной или двоичной (или семиричной, или третичной). Это просто другой вид записи цифр, и на математику это никак не влияет. Тебе же ясно сказал Юрий Зотов.
А если тебе нужно разложить число по битам (кажется, именно это ты и имел в виду) - это операция совсем другого рода.
Юрий Зотов (2002-08-31 16:06:00) [9]> Егор (31.08.02 15:24)
А в десятичной системе как это сделать?
Пример: 2+5+13+8=28.
Теперь даю Вам число - 28. Как получить из него 2, 5, 13 и 8?
Егор (2002-08-31 15:53:00) [10]Ну и???
Мужики!!! Если б я знал - не спрашивал!
Anatoly Podgoretsky (2002-08-31 15:48:00) [11]Прочитать ответ Юрий Зотов © (27.08.02 23:54)
Егор (2002-08-31 15:24:00) [12]Со сложением всё ясно. А как обратно перевести? То есть значение 0D 00 02 00 перевести в
Результат:
01 00 00 00
04 00 00 00
08 00 00 00
00 00 02 00
Юрий Зотов (2002-08-28 00:41:00) [13]Sorry, ошибочка вышла - 31(3) не бывает. Правильно - 101(3).
:о)
Юрий Зотов (2002-08-27 23:54:00) [14]> Егор
Так и быть, открою страшную тайну.
var
i1, i2, i3, i4, R: integer;
begin
i1 := $01000000;
i2 := $04000000;
i3 := $08000000;
i4 := $00000200;
R := i1 + i2 + i3 + i4; // Вот она, страшная тайна!
end;
Результат: R = $0D000200. Можете проверить:
Label1.Caption := IntToHex(R, 8);
Дело в том, что любое число имеет само значение (value) и имеет строковое представление этого значения (representation). Первое не зависит ни от чего и увидеть его невозможно. Видим мы всегда только второе - и только это второе зависит от системы счисления.
Пример. Количество пальцев у меня на руках в разных системах счисления можно записать, как 1010(2), 31(3), 20(5), 14(6), 12(8), 10(10), А(16) и так далее (система счисления указана в скобках). Но как бы мы его ни записывали, пальцев у меня от этого ни прибавится, ни убавится.
Поэтому не существует никаких шестнадцатеричных или десятичных ЗНАЧЕНИЙ. Существуют СТРОКОВЫЕ представления ОДНОГО И ТОГО ЖЕ значения в разных системах счисления. Вот они-то и разные, а само ЗНАЧЕНИЕ всегда одно.
А складываются значения с помошью знака плюс.
Reindeer Moss Eater (2002-08-27 18:39:00) [15]>Егор
Они складываются с помощью знака "+"
Silentor (2002-08-27 18:38:00) [16]Имеется библиотека HyperString. Так там есть routines для арифметики чисел в строковом виде.
Внук (2002-08-27 18:34:00) [17]StrToIntDef и IntToHex потом.
Хотя все равно не очень понятно, внутреннее представление чисел в любом случае бинарное
Егор (2002-08-27 18:31:00) [18]
> calc.exe :)))
Умник? Ладно... Специально для умников:
Помогите программносложить шестнадцатеричные значения.
Skier (2002-08-27 18:27:00) [19]>Егор
calc.exe :)))
Егор (2002-08-27 18:26:00) [20]В примере, очевидно.