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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Наложение гаммы на число, C++ Builder
сообщение
Сообщение #1


Профи
****

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

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


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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Я тебе вот тут: Отсечение лишних разрядов уже показывал, как соорудить маску. Так вот просто XOR-ишь, и накладываешь эту самую маску, чтобы отсечь лишние старшие разряды.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


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

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

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


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


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


Профи
****

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

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


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

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

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


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

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

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


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

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

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


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

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

 





- Текстовая версия 27.10.2020 10:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name