Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

побитовое исключающее ИЛИ [D6, Win2k]


avr555 ©   (2002-01-24 16:07:00) 

Где мне найти в Delphi побитовое исключающее ИЛИ?


DeCompiler   (2002-01-28 20:43:00) [1]

На самом деле ;)) нам и не обязательно знать, где это сравнение происходит, факт - оно есть.
О пасе, так о пасе, но XOR - это инструкция проца и дельфа её юзает ее соответствено, на уровне асма
(на котором эта дельфа и написана). Xor в дельфе и xor в асме в принципе одно и то же, разве что в
дельфе нас не заботит содержимое и размер операндов (байты, ворды, дворды и т.д.). А процедура одинакова

mov [регистр1],[операнд1]
mov [регистр2],[операнд2]
xor [регистр1],[регистр2]

Хоть в пасе, хоть в си, хоть в фортране с азой :)) Процы Intel, они и в Африке процы Intel (только черные)
и инструкции с ними...

А вообще вопрос был: "Где мне найти в Delphi побитовое исключающее ИЛИ?"... Кажется, на него уже
ответили... Xor...


Digitman   (2002-01-28 08:27:00) [2]

"На самом деле ... сравнение" происходит внутри ALU CPU на уровне микрокода. Но мы-то - о Паскале в дан.случае !


DeCompiler   (2002-01-27 16:57:00) [3]

На самом деле при использовании xor сравнение ведь происходит, это еще по элементарной алгебре логики известно:
1 xor 1, 0 xor 0 -> 0
1 xor 0, 0 xor 1 -> 1
ЕСЛИ одинаковы ТО 0
ЕСЛИ нет ТО 1

Ну а "если -> то" и есть сравнение...

Преобразования можно достичь всё тем же простейшим присваиванием Result := A xor B, только результат записать в A или B.
A := A xor B.


Digitman   (2002-01-24 17:21:00) [4]

так СРАВНЕНИЯ или ПРЕОБРАЗОВАНИЯ ? разные ведь вещи абсолютно ! Сравнение не меняет значения операндов, преобразование записывает в результатирующий операнд результат операции.

при выполнении строчки Result:= A XOR B ничего ни с чем не сравнивается (на уровне Паскаля), какого бы типа ни были операнды и то, куда результат выполнения записывается


Romkin   (2002-01-24 16:57:00) [5]

char(byte(ch1) xor byte(ch2)), но очень просто разгадывается, если, конечно, ключ короче сообщения или тоже текст (а не белый шум)


avr555   (2002-01-24 16:53:00) [6]

Ну это что-то типа шифрования.
Если потом получить символ, который является результатом побитового сравнения, то получится элементарное шифрование.
Как это сделать в С я знаю, а вот как в Delphi...


Digitman   (2002-01-24 16:50:00) [7]

А это зачем, позволь полюбопытствовать, - сравнивать два символа с использованием операции побитового "исключающего ИЛИ" ? это похоже на поездку из Москвы в Питер через Гондурас)Просто сравнение численных значений их кодов тебя не устраивает ?


avr555   (2002-01-24 16:44:00) [8]

А как мне сделать, чтобы результат был снова символ?


Иван Шихалев   (2002-01-24 16:38:00) [9]

byte(ch1) xorbyte(ch2)


avr555   (2002-01-24 16:32:00) [10]

Мне нужно сравнить два символа.


Adder   (2002-01-24 16:30:00) [11]

а чем xor не устраивает ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо