Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: CL | DM;

Вниз

Сложение.   Найти похожие ветки 

 
Егор   (2002-08-27 18:19) [0]

Привет. Помогите сложить шестнадцатеричные значения.

01 00 00 00 +
04 00 00 00 +
08 00 00 00 +
00 00 02 00

Результат - 0D 00 02 00

Нужен пример!


 
MBo ©   (2002-08-27 18:23) [1]

Проблема-то в чем?


 
Егор   (2002-08-27 18:26) [2]

В примере, очевидно.


 
Skier ©   (2002-08-27 18:27) [3]

>Егор
calc.exe :)))


 
Егор   (2002-08-27 18:31) [4]


> calc.exe :)))


Умник? Ладно... Специально для умников:
Помогите программно сложить шестнадцатеричные значения.


 
Внук ©   (2002-08-27 18:34) [5]

StrToIntDef и IntToHex потом.
Хотя все равно не очень понятно, внутреннее представление чисел в любом случае бинарное


 
Silentor ©   (2002-08-27 18:38) [6]

Имеется библиотека HyperString. Так там есть routines для арифметики чисел в строковом виде.


 
Reindeer Moss Eater   (2002-08-27 18:39) [7]

>Егор
Они складываются с помощью знака "+"


 
Юрий Зотов ©   (2002-08-27 23:54) [8]

> Егор

Так и быть, открою страшную тайну.

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) и так далее (система счисления указана в скобках). Но как бы мы его ни записывали, пальцев у меня от этого ни прибавится, ни убавится.

Поэтому не существует никаких шестнадцатеричных или десятичных ЗНАЧЕНИЙ. Существуют СТРОКОВЫЕ представления ОДНОГО И ТОГО ЖЕ значения в разных системах счисления. Вот они-то и разные, а само ЗНАЧЕНИЕ всегда одно.

А складываются значения с помошью знака плюс.


 
Юрий Зотов ©   (2002-08-28 00:41) [9]

Sorry, ошибочка вышла - 31(3) не бывает. Правильно - 101(3).
:о)


 
Егор   (2002-08-31 15:24) [10]

Со сложением всё ясно. А как обратно перевести? То есть значение 0D 00 02 00 перевести в

Результат:
01 00 00 00
04 00 00 00
08 00 00 00
00 00 02 00



 
Anatoly Podgoretsky ©   (2002-08-31 15:48) [11]

Прочитать ответ Юрий Зотов © (27.08.02 23:54)


 
Егор   (2002-08-31 15:53) [12]

Ну и???
Мужики!!! Если б я знал - не спрашивал!


 
Юрий Зотов ©   (2002-08-31 16:06) [13]

> Егор (31.08.02 15:24)

А в десятичной системе как это сделать?
Пример: 2+5+13+8=28.
Теперь даю Вам число - 28. Как получить из него 2, 5, 13 и 8?


 
drpass ©   (2002-08-31 16:24) [14]

>Егор
Ты просто не понимаешь смысла: число в шестнадцатеричной системе ничем не отличается от числа в десятичной или двоичной (или семиричной, или третичной). Это просто другой вид записи цифр, и на математику это никак не влияет. Тебе же ясно сказал Юрий Зотов.
А если тебе нужно разложить число по битам (кажется, именно это ты и имел в виду) - это операция совсем другого рода.


 
Delirium ©   (2002-08-31 16:28) [15]

Хм, а у меня сложилось впечатление, что ему нужно реализовать алгоритм получения ограниченного множества чисел, дающих в сумме определённое значение.


 
TTCustomDelphiMaster ©   (2002-08-31 16:59) [16]

Delirium © (31.08.02 16:28)
А у меня сложилось впечатление что ему нужна операция XOR. Но похоже одному Богу известно что ему нужно:)


 
Егор   (2002-08-31 20:46) [17]


> Теперь даю Вам число - 28. Как получить из него 2, 5, 13
> и 8?


Ну и как?


 
Алексей Ким ©   (2002-08-31 20:58) [18]

28-2-5-13=8
28-2-5-8=13
итд

толька скажи мне ты хочешь минимальный шаг то есь 1 или
максимальный то есь само число?
или ты создал прогу у которая развила телепатические способности?


 
Юрий Зотов ©   (2002-08-31 23:31) [19]

> Егор (31.08.02 20:46)
> Ну и как?

Очень просто. Есть такой алгоритм - "гадание на кофейной гуще". Если применить его рекурсивно, то все получится. Главное в этом деле - меньше думать и больше спрашивать.


 
drpass ©   (2002-08-31 23:44) [20]

>Егор
Что можно ответить на такой вопрос...
Попробуй научиться работать хотя бы в Microsoft Word. Delphi для тебя будет сложноватой :)


 
Dimk   (2002-08-31 23:47) [21]

А ведь в арифметике еще много других действий -
например умножение, деление...
:0)



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
1-35673
Dimk
2002-08-31 21:45
2002.09.12
Почему если из витка ( thread ) создать фору - выдается сообщение


1-35693
MaxSit
2002-09-02 01:23
2002.09.12
Найти активный CONTROL и поиграться им


3-35609
ShuraGrp
2002-08-22 16:28
2002.09.12
TDataSet.Open приводит к тому, что все поля Visible = false


1-35684
IronHawk
2002-08-30 01:17
2002.09.12
Приветствую Мастеров! Я знаю что позор, но напомните мне плз, как


1-35751
alexvanglukhman
2002-08-30 15:59
2002.09.12
Не могу понять что происходит?