Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
Егор   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.01 c
1-35721
Begin
2002-09-01 03:46
2002.09.12
Простой вопрос про Drag


1-35633
Strela
2002-08-30 01:18
2002.09.12
Динамическое создание объекта


6-35831
poiuytrewq
2002-06-06 21:24
2002.09.12
how to get all host names in local network


1-35752
Злой!!!
2002-08-29 19:03
2002.09.12
Динамический массив классов


1-35692
neg2001
2002-09-02 15:28
2002.09.12
Подскажите, где взять VCL компоненты для шифрования и хеш-функции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский