Сейчас на форуме: zombi-vadim, zds (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› Альтернатива xor |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . >> |
Посл.ответ | Сообщение |
|
Создано: 05 августа 2006 03:18 · Личное сообщение · #1 |
|
Создано: 07 августа 2006 02:02 · Личное сообщение · #2 |
|
Создано: 07 августа 2006 02:12 · Поправил: SubV · Личное сообщение · #3 Rascal, я в том смысле, что VC++ оптимизирует подобные выражения, т.е. вычисляет то, что может быть константой и минимизирует логические выражения. Наиболее хорошо в этом плане дела обстоят у Visual C++ 2003 и 2005 с подключенным компилятором Intel C++ compiler v9.1. Знаю, ибо проверял, в том числе и с использованием SSE. Demon666 ![]() ![]() ![]() |
|
Создано: 07 августа 2006 04:15 · Личное сообщение · #4 Rascal пишет: физически в компе все операции вычитания заменяются на сложение и отрицание. На чём основано сиё утверждение? Rascal пишет: Кста, если мне не изменяет память эта функция называется сумма по модулю два Да, так и называется, но какое это отношение имеет к xor?! Rascal пишет: Хотя если операнды однобитовые то можно говорить о сложении Да, xor - есть сложение для однобитных операндов. И также является вычитанием для однобитных операндов! Ведь 1 == -1 ![]() |
|
Создано: 07 августа 2006 06:21 · Поправил: SubV · Личное сообщение · #5 Хотя вопрос и не мне ![]() Quantum пишет: На чём основано сиё утверждение? На знании о том, как работает процессор ))) Точнее, все операции заменяются на сложение, т.к. это единственное, что он (процессор) умеет. Ну да, еще пересылка данных, ага... Предвидя возражения, скажу сразу, что речь идет о самом низком (микропрограммном) уровне выполнения инструкций. Quantum пишет: Да, так и называется, но какое это отношение имеет к xor?! LOL! Сумма по модулю 2 и есть xor aka eXclusive OR aka Исключающее ИЛИ. Самое прямое отношение, т.к. это одно и то же. RTFM. Quantum пишет: Да, xor - есть сложение для однобитных операндов. И также является вычитанием для однобитных операндов! Ведь 1 == -1 1 никак не может быть равно -1, ибо -1 это 0xffffffff. Еще раз, XOR - это сложение по модулю 2, логическая операция, и к арифметической операции сложения отношения сабж не имеет.
Прилагаю неплохой 'калькулятор крэкера'. Надеюсь, он поможет вам раз и навсегда решить 'проблему миллениума' - что же ТАКОЕ этот XOR?! ![]() |
|
Создано: 07 августа 2006 06:29 · Личное сообщение · #6 |
|
Создано: 07 августа 2006 07:51 · Личное сообщение · #7 |
|
Создано: 07 августа 2006 08:43 · Личное сообщение · #8 |
|
Создано: 07 августа 2006 08:56 · Личное сообщение · #9 |
|
Создано: 07 августа 2006 13:18 · Поправил: rmn · Личное сообщение · #10 Несколько примеров, доказывающих, что xor - это все арифметические операции ![]() 2B XOR 23 == 2B - 23 => 08
![]() |
|
Создано: 07 августа 2006 13:21 · Личное сообщение · #11 |
|
Создано: 07 августа 2006 14:37 · Поправил: Rascal · Личное сообщение · #12 Demon666 Обрати внимание - на одинаковых входных данных функция возвращает 0, это её свойство, и оно никак не связано с арифметикой. Quantum пишет: На чём основано сиё утверждение? Почитай книги по алгебре логики и поймёшь. Ara Этот однобитный пример. Для доказательства, что функция действительно выполняет вычитание покажи на всех доступных наборах входных данных правильность этого утверждения. Причём не только однобитных. Т.к. в однобитных операциях не требуется перенос бита в старший разряд. Тогда в однобитных and будет вполне рабочим умножением ;) Ну а далее то, больше 1 что будет theCollision Фперёд. Если б нашёл я бы выложил сюда схему арифметического устройства моего из курсачв. Он на xor и "не" был построен. Ты бы посмотрел чего стоило сделать из этого сумматор 32 разрадных чисел ;) rmn Отжог =))) ----- Недостаточно только получить знания:надо найти им приложение ![]() |
|
Создано: 07 августа 2006 15:00 · Личное сообщение · #13 SubV пишет: Rascal, я в том смысле, что VC++ оптимизирует подобные выражения, т.е. вычисляет то, что может быть константой и минимизирует логические выражения. Наиболее хорошо в этом плане дела обстоят у Visual C++ 2003 и 2005 с подключенным компилятором Intel C++ compiler v9.1. Знаю, ибо проверял, в том числе и с использованием SSE. Да, компилеры сильны. Класс чтоб проверить пришлось написать задание параметров через cin, а то он уже компилил с результатом ![]() ----- Недостаточно только получить знания:надо найти им приложение ![]() |
|
Создано: 07 августа 2006 15:00 · Личное сообщение · #14 |
|
Создано: 07 августа 2006 17:29 · Личное сообщение · #15 |
|
Создано: 07 августа 2006 19:30 · Личное сообщение · #16 |
|
Создано: 07 августа 2006 20:49 · Личное сообщение · #17 Rascal xor это не алгебра (это мнемокод), а обычный “тригер” на входах которого, если появятся два сигнала на выходе сигнал исчезает, если на входе один из сигналов равен ~0 то на выходе сигнал будет, короче… Вход<-> Вход=выход 1<->1=0 1<->0=1 0<->1=1 0<->0=0 а там хоть складывай или отнимай процессору все равно для него главное, сколько вольт вешать в граммах! P. S. Так утрировано без научных терминов. ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 07 августа 2006 21:21 · Личное сообщение · #18 Demon666 Как у тя с чувством юмора? Demon666 пишет: xor это не алгебра (это мнемокод), а обычный “тригер” Вижу под умного косишь... xor это название, и никак не триггер. Это символьное обозначение логической функции, таблица истинности которой для 2-х операндов описана в моём посте в конце первой страницы. И причём здесь алгебра??? Вижу у тя совсем худо стало с чем-то. Советую не лезть в тему, в которой плаваешь как топор ;) Demon666 пишет: Так утрировано без научных терминов. Утрировано здесь обсуждается уже с третьего поста, ибо именно с 3-го поста нет ни одной светлой мысли по поводу темы топика. ----- Недостаточно только получить знания:надо найти им приложение ![]() |
|
Создано: 07 августа 2006 21:22 · Личное сообщение · #19 |
|
Создано: 07 августа 2006 21:32 · Личное сообщение · #20 Rascal Ты не прав! Открой старые учебники по электроннике или всем известный справочник Шило! Взгляни на работу схем, увидишь в основном все и вся завазано на трех логиках - И , ИЛИ , НЕ . Отсюда комбинируют: 2И-НЕ и получают а-ля элеммент Шеффера! Долго не думают и творят ИЛИ-НЕ , в итоге Стрелка Пирса. То что мы привыкли видеть, а это сложение, деление, вычитание, на машине производится путем комбинации этих 3х логик! Правда "наша советская" от "буржуазной интеловской" отличается уровнем активации, если у нас это фронт ( перепад с логическго нуля на единицу), то у них это срез( перепад с 1 на 0, что тоже кстати логично в плане схемотехники). Это единственное отличие нашей и импортной схемотехники, к тому же старая советская уже исчезает. Ну да ладно не о том говорю, а том, что в Intel-процессорах , тоже завязано на И,ИЛИ,НЕ, а комбинации сводятся к громадным JK-триггерам,дешифраторам,шифраторм, сдигающим регистрам и т.п. То что пытылся выразить Demon666 это взгляд электронщика, т.к. машина не умеет "xor" ить и ее этому надо научить! ----- My love is very cool girl. ![]() |
|
Создано: 07 августа 2006 22:08 · Поправил: Rascal · Личное сообщение · #21 theCollision Сегодня меня все как я вижу пытаются удивить. Знаешь, почему и, или, не используется - эта комбинация операций по теореме яблонского-поста (хм, далее в тетради написано т. Фроста-Яблонского, видимо плеер слушал, интеренсо какой из вариантов прваилен, вроде Пост)обладает имеет 5 признаков поноты системы функций. Использоватся она стала потому как на основе этого работал Буль и создал свою алгебру, никем не востребованную в в 19 веке вроде, она не просто достаточна, она избыточна, в отличии от срелки пирса и штриха шефера. Напишу и выпендрюсь, вот эти 5 свойств: 1) не содержит const 0 2) не содержит const 1 3) не самодвойственна 4) не линейна 5) не монотонна Так вот теперь о других элементах - ты хочешь меня научить менять базис функции??? Можешь не париться, всё это пройдено и успешно оставлено на случай, когда понадобится. Мы откуда и куда только не переводили. Логику рассчитывали мы в И ИЛИ НЕ, а потом переводили на предоставленный базис, так что не рассказывай, как одну функцию представить через другую. theCollision пишет: То что мы привыкли видеть, а это сложение, деление, вычитание, на машине производится путем комбинации этих 3х логик! Позволь поправить, ещё умножение. Можно ещё более уточнить - делается это всё через сложение. А потом легко сменить базис и представить в любой другой полной системе функций. theCollision пишет: Ну да ладно не о том говорю, а том, что в Intel-процессорах , тоже завязано на И,ИЛИ,НЕ, а комбинации сводятся к громадным JK-триггерам,дешифраторам,шифраторм Ну завязано, но вопрос не в этом. JK триггер он как и либой другой триггер служит для хранения бита, и почему он вдруг становится ОГРОМНЫМ? Может имеется ввиду объединение триггеров в регистры? Дешифратор, шифратор - ну и, были у меня в схеме оба элемента, они в принципе используются везде. Что за сдвигающие регистры??? Они сами чтоль сдвигаются??? Ну а регитсры - у меня были T-триггеры, чему я безумно рад =)) theCollision пишет: То что пытылся выразить Demon666 это взгляд электронщика, т.к. машина не умеет "xor" ить и ее этому надо научить! Обрати внимание, что демон уверен, что xor выпоняет вычитание, он отнюдь не искушен в схемотехнике и теории автоматов, и алгебре логики. Он написал, что встретил в интернете. Здесь речь шла не о устройстве процессора, а о работе функции "сумма по модулю два". Если тебе хотелось увидеть воспоминание о триггере, попросил бы, я б сюда забахал записку по курсачу - там много интересного написано. Здесь сидят не электронщики, хотя и это некоторые умеют(включая вашего покорного слугу), здесь сидят программеры, пишущие микропрограммы, поэтомпу триггеры - слово классное, но здесь неуместное, а просто выебонское ;) ----- Недостаточно только получить знания:надо найти им приложение ![]() |
|
Создано: 07 августа 2006 22:13 · Личное сообщение · #22 |
|
Создано: 07 августа 2006 22:27 · Личное сообщение · #23 Можно ещё более уточнить - делается это всё через сложение.
вроде спец хороший, а такую ересь говоришь. Давай-ка попробую возразить, а если не прав, то критике всегда рад, лишь бы в голове прибавилось бы! Ну так вот, открываем справочник, вот сполки беру : Справочник Цифровые интегральные микросхемы", Москва, Радио и связь, 1994 ISBN-5-256-00845-5 страница 29, рис. 2.3. что видим? Видим схему элемента И-НЕ ТТЛШ-серии. Несмотря на то что это старье, принципы работы ЭВМ остались теже! И, ИЛИ, НЕ. На данном рисунке ты увидишь как просто создать элементы И-НЕ, всего-то много-эммитерный транзистор! А теперь подумаем, если бы машины складывали-сдвигали и тем самым делали "привычное умножение", то каким бы элемментарный функциональный элемент получился бы? Возьми и почерти ради примера, такой элемент карандашом на бумаге! Другое дело сдвинуть и Логическое ИЛИ, тут я согласен! Это можно и быстро реализуемо. И если учесть изготовление процессоров(технология) то и быстро изготовимо! Замечу логическое ИЛИ и "привычное сложение" не одно и тоже! ----- My love is very cool girl. ![]() |
|
Создано: 07 августа 2006 22:44 · Поправил: Rascal · Личное сообщение · #24 theCollision пишет: Возьми и почерти ради примера, такой элемент карандашом на бумаге! Уже сделано, Леэит в архиве в универе. Делается так. Берётся микропрограмма сложения и реализуется на любой элементной базе. Получаем элемент схему, сумматор. Умножение базируется на циклическом сдвиге со сдвигом множемого или множителя и суммированием. Вычитание - перевод уменьшаемого в доп код или обратный код и суммирование умеьшаемого и вычитаемого. Деление уже забыл, где-то валяется микропрграмма. Но суть есть вычитание (то есть суммирование в доп кодах) и занесение бита в частное. Тоже есено со сдвигом. theCollision пишет: Замечу логическое ИЛИ и "привычное сложение" не одно и тоже! Любая логическая операция не может счиаться арифметической!!! Наконец тыц написал, что все тут пытаются доказать, то есть по теме топика =))) Мир брат ----- Недостаточно только получить знания:надо найти им приложение ![]() |
|
Создано: 07 августа 2006 23:56 · Поправил: Demon666 · Личное сообщение · #25 Rascal пишет: И причём здесь алгебра??? Хм. Что только я вижу твои первые посты всучивания алгебры? Rascal пишет: Народ, откройте книги по алгебре логики и найдёте ещё много интересного. Rascal пишет: Да, читай по этому поводу книги по алгебре логики и булевой алгебре. Demon666 пишет: xor это не алгебра (это мнемокод) Народ кто нить еще их видить? Rascal пишет: Обрати внимание, что демон уверен, что xor выпоняет вычитание Ха-ха это ты брат попутал имена! Лично мое мнение специально для тебя! Xor Правила побитового исключающего ИЛИ ПРИМЕР: Demon666 пишет: а итог: 0101 0011 ------ 0110 Если ты не способен разобраться какое мое мнение и где я указываю на нужные вещи то… theCollision пишет: Открой старые учебники по электроннике Ага, вот я и решил “реликт” вспомнить из памяти прошлых веков, чтобы видно было, откуда ветер начинал дуть и в какую сторону!!! (Rascal вот где юмор!) ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 08 августа 2006 00:11 · Личное сообщение · #26 |
|
Создано: 08 августа 2006 01:42 · Личное сообщение · #27 SubV пишет: На знании о том, как работает процессор ))) Так, и вот ещё один такой-же гуру пишет: Rascal пишет: Почитай книги по алгебре логики и поймёшь. Я могу утверждать, что Z80 заменяет сложение вычитанием (а не наоборот), потому что знаю как работает физически этот процессор. Но на компе у меня установлен не Z80, а Intel P4. Видимо, SubV и Rascal работают на Intel, поэтому знают как работает этот проц. Остаётся им только позавидовать. SubV пишет: LOL! Сумма по модулю 2 и есть xor aka eXclusive OR aka Исключающее ИЛИ Сумма по модулю 2 - есть вычитание, роль которого может выполнить xor лишь в очень специфичных случаях. Кому-то нужно подучить матчасть ![]() SubV пишет: 1 никак не может быть равно -1 Однобитный 1 = ...0000000000000000000|1 = 1 Однобитный -1 = ...111111111111111111|1 = 1 ![]() |
|
Создано: 08 августа 2006 01:54 · Личное сообщение · #28 Quantum пишет: Я могу утверждать, что Z80 заменяет сложение вычитанием (а не наоборот), Расскажи нам тогда, как процессор вычитает. Микропрограмму то есть. Любопытно посмотреть как реиловно вычитание без сложения... Очень интересно..... Прям в самое сердце. Машина умеет вычитать без сложения... В студию как это работает Quantum пишет: Сумма по модулю 2 - есть вычитание, роль которого может выполнить xor лишь в очень специфичных случаях. Кому-то нужно подучить матчасть Так. Уж кому поучить так тебе. Это название функции которая работает по таблице истинности указанной в конце первой страници и здесь тоже была. Андерстенд? Это название одной и той же функции. Что по твоему обозначает XOR. Исключающее или. Это и есть сумма по модулю 2 Сумма по модулю никак не вычитание. А мне так кажется что это сложение. Что скажешь. И над названием заодно покури, мож узнаешь слово "сумма". Таблица истинности именно сложения. Quantum пишет: Однобитный 1 = ...0000000000000000000|1 = 1 Однобитный -1 = ...111111111111111111|1 = 1 Ты в курсе, как представляются отрицательные числа в процах??????? Очевидно нет. Тогда подскажу, число отрицательно если старший бит == 1. Правда если условлено, что отриц числа есть и функция обработки подразумевает число отрицательным, а вызвовший функцию код тоже догадывается, что работает с отриц числами, то есть не использует старший бит как значащий. Теперь расскажи, как поместить в один бит знак и число??? ----- Недостаточно только получить знания:надо найти им приложение ![]() |
|
Создано: 08 августа 2006 02:30 · Личное сообщение · #29 |
|
Создано: 08 августа 2006 02:43 · Личное сообщение · #30 Rascal пишет: Микропрограмму то есть. Кого? Внутри Z80 была микропрограмма??? Могу обьяснить устройство ALU на транзисторном уровне, но боюсь подорвать твою веру в микропрограмму. Rascal пишет: Машина умеет вычитать без сложения... А что собой представляет вычитание? Если по модулю 2, то вычитание - есть сложение. Если по модулю 1 + бит знака, то вычитание - есть отдельная операция. В современных процессорах используется сумма по модулю 2 как раз чтобы вместо 2х операций (сложение и вычитание) в каждом блоке ALU реализовывать только сложение или только вычитание + предварительный neg. Кажется, я отвлёкся... Rascal пишет: Машина умеет вычитать без сложения... Z80 складывал и вычитал, т.к. по сути это одна и таже операция. Кстати, некоторые ассемблеры автоматически заменяли add n на sub -n, т.к. первые модели вообще не имели add. Rascal пишет: Что по твоему обозначает XOR. Исключающее или. Это и есть сумма по модулю 2 Это же справедливо только для однобитных операндов: xor == add == sub. Только для однобитных!!! В топике обсуждается НЕ однобитный xor. Сумма по модулю 2 не распространяется на арифметическую сумму или разность (8, 16, 32, ... бит). Настоятельно советую подучить матчасть, если всё ещё не ясно, что xor, который обсуждается в топике - это микроинструкция xor, а не сумма по модулю 2, т.е. избитая табличка, которую я позволю себе лишний раз процитировать: 0 0 0 0 1 1 1 0 1 1 1 0 Rascal пишет: [...] Теперь расскажи, как поместить в один бит знак и число??? Если мои доводы тут никого не убеждают, то, возможно, бОльшим авторитетом тут пользуются хорошо известные компиляторы... Напиши на C bit field с однобитными полями типа signed, присвой любому из них 1 или -1. При попытке присвоить 1, вылезет ошибка (1 не входит в ОДЗ), а -1 присвоится без проблем. Таким образом, 1 == 1 (если тип беззнаковый) 1 == -1 (если тип знаковый) ![]() |
|
Создано: 08 августа 2006 02:48 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . >> |
![]() |
eXeL@B —› Программирование —› Альтернатива xor |