|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2010, 12:41 | #1 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
быстрое вычисление XOR
мне нужно вычислять адрес второго близнеца в ДВП(дин. выдел. памяти) метод близнецов. Адрес второго близнеца равен A XOR SIZE , A - адрес первого близнеца, size - его размер.
Не программно, а на листе бумаги. Допустим близнец(адрес,размер): (6144,1024) адрес второго будет 6144 xor 1024 = 7168 то есть a xor b = (a+b) или (a-b) как узнать когда минус, когда плюс ? хочу вычислять xor не переводя числа в двоичную |
05.06.2010, 13:55 | #2 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
ааааааааап
|
05.06.2010, 15:42 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
что Вы непонятное хотите...
практически в любом ЯП есть операция XOR например, в Pascal: Код:
Вы хотите понять, что такое XOR (она же сложение по модулю 2, она же Исключающее ИЛИ) ?! Так ТУТ разжёванно... |
05.06.2010, 20:15 | #4 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
читайте внимательнее мой пост:
Цитата:
|
|
05.06.2010, 22:09 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
так я же ссылочку на статью в Википедии дал..
не разобрались?! Поясню. 1) переводим числа в двоичный вид. 2) дальше выполняем поразрядно Если считаем, что выполняем суммирование по модулю два: это означает, что 0 + 0 даёт 0 0 + 1 даёт 1 1 + 0 даёт 1 1 + 1 даёт 0 (т.е. превышает 2-ку по модулю) или, если брать во внимание исключающее ИЛИ (это другое название всё того же вездесущего XOR) тогда правило такое - единица получает ТОЛЬКО в том случае, когда разряды различны (0 и 1 ; 1 и 0) когда разряды одинаковы - результат операции - ноль. p.s. если сравните с таблицей истинности, полученной в результате сложения по модулю два, увидите, что это даёт один и тот же результат. Теперь я Вас правильно понял? Или расписать поразрядно на примере Ваших чисел из #1 ? |
06.06.2010, 11:32 | #6 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
извините меня конечно)) но вы так и не поняли ( то ли прочитали опять невнимательно то ли хз) что мне нужно. Я хочу считать XOR без перевода в двоичную систему... знаете... там в тесте 7 пар чисел, которые надо перексорить чтобы найти близнецов для каждой пары. Переводить каждое число в двоичное это бред). То что вы мне дали по ссылке, спасибо конечно, но я это знаю еще с курса дискр. математики и это не то что мне хотелось.
|
06.06.2010, 11:39 | #7 |
Форумчанин
Регистрация: 23.02.2010
Сообщений: 107
|
6144 в двоичной - это 1100000000000.
И, как указано выше, 0 xor 1 = 1, т.е. сумма. Т.е. если b в пределах этих нулей, то будет сумма. 2047 = 011111111111. 1 xor 1 = 0 и 1 xor 0=1, будет вычитание. А вот если взять число 1878 = 11101010110. Где - сумма, где - вычитание. _____________________ xor вычисляется так: Разложить числа a и b на максимальные числа в степени двойки. 333=256 + 64 + 8 + 4 + 1; //эти числа символизируют один включенный бит, т.е. 2^8=256 - восьмой бит. 75=64 + 8 + 2 + 1; Т.к. 1 xor 1 = 0, то вычеркиваются все совпадения. 333=256 + 4; 75= + 2; Т.к. "0 xor 1 = 1" и "1 xor 0 = 1", складываем. Результат: 260+2=262; Или, например: 405=256+128+16+4+1; 35=32+2+1; Вычеркиваем совпадения. 405=256+128+16+4; 35=32+2; Суммируем. 404+34=438; Еще пример: 2452=2048+256+128+16+4; 791=512+256+16+4+2+1; //не забываем про 2 и 1 Снова вычеркиваем совпадения. 2452=2048+128; 791=512+2+1; Складываем. 2176+515=2691; И совсем легко: 5=4+1 3=2+1 4+2=6 Таким способом можно вычислить or и and, и даже shr и shl. |
06.06.2010, 11:56 | #8 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
спасибо !!!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ох уж эти OR, AND, XOR! | NSV | Свободное общение | 6 | 27.03.2010 10:38 |
алгоритм XOR | ravmad | Общие вопросы C/C++ | 2 | 29.05.2009 21:21 |
Функциональная схема к (A and B xor C) and B | Artemd999 | Помощь студентам | 4 | 09.01.2009 01:21 |