IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Наложение гаммы на число, C++ Builder
18192123
сообщение 24.03.2009 10:05
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Здравствуйте!
Скажите пожалуйста, как произвести XOR между двумя числами типа __int64, если отксорить требуется определённое число разрядов?
например, 0xB5F2A8D63D2F0FB и 0x74726571, т.е каждый из разрядов из последнего числа нужно отксорить с соответствующими из 1-го..как только 2-е число заканчивается, XOR прекращается.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 24.03.2009 10:37
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(18192123 @ 24.03.2009 10:05) *
каждый из разрядов из последнего числа нужно отксорить с соответствующими из 1-го..как только 2-е число заканчивается, XOR прекращается.
Что значит "прекращается"? Это значит, что остальные (верхние) разряды результата - нули? или такие же, как в первом? или единицы?
Определи операцию корректно. Просто "прекратить" невозможно. Результат должен быть чем-то заполнен до конца.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 28.03.2009 16:58
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(Lapp @ 24.03.2009 10:37) *

Результат должен быть чем-то заполнен до конца.

Почему должен?
Мне как раз и нужно, чтобы в результате осталось столько разрядов, сколько было во 2-м числе.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 29.03.2009 7:13
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(18192123 @ 28.03.2009 16:58) *
Почему должен?
Мне как раз и нужно, чтобы в результате осталось столько разрядов, сколько было во 2-м числе.
Потому что количество разрядов фиксировано (и равно в данном случае 64). Если ты говоришь про значащие разряды, то поведай об этом миру smile.gif.

Ты сказала, что делать с нижними разрядами (XOR). С верхними осталось непонятным. Что означает "прекратить"? Прекратить XOR нельзя, он выполняется за один такт. Ты, по всей видимости, подразумеваешь модель, в которой операция (XOR) выполняется побитно, начиная с младшего разряда. Тогда "прекратить" может означать:
1. оставить как в первом операнде (в твоем примере - 0xB5F2A8D);
2. оставить как во втором операнде (нули).

На будущее имей в виду, что если ты оперируешь с чилами определенного формата, то и оба операнда, и результат должны быть этого формата. И если верхние биты присутствуют, то надо их так или иначе определять. И даже если их значение тебе неважно (может быть любым), то так и скажи - это и будет определением. Ничего не сказать - нельзя.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 10:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"