Помощь - Поиск - Пользователи - Календарь
Полная версия: Наложение гаммы на число
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
18192123
Здравствуйте!
Скажите пожалуйста, как произвести XOR между двумя числами типа __int64, если отксорить требуется определённое число разрядов?
например, 0xB5F2A8D63D2F0FB и 0x74726571, т.е каждый из разрядов из последнего числа нужно отксорить с соответствующими из 1-го..как только 2-е число заканчивается, XOR прекращается.

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

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

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

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

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