Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как на СИ сделать XOR двух строк из 0 и 1?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть 2 строки символов: 10010101010101001 и 1001. Как поксорить (XOR) первую на вторую? Время работы не существенно, главное, чтобы работало и выдавало результат хотя бы в десятичной (лучше двоичной) с.счисления.

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 14:30 21-04-2003 | Исправлено: zam, 14:32 21-04-2003
rew



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
оператор xor - ^ или что тебе нужно? вручную чтоли?

----------
плох тот error который не мечтает стать general`ом

Всего записей: 442 | Зарегистр. 09-09-2001 | Отправлено: 14:52 21-04-2003
zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеем: a = s ^ d;
s = 3614979840d = 11010111011110000011011100000000b
d = 129d = 10000001b
 
почему то а получается слишком большим, т.е. в бинарном виде 32 бита, хотя должен занимать 8 бит, т.к. d - 8 бит
 

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 16:46 21-04-2003
oio



Дочкин папа
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zam
а по какой такой теории разрядность "меньшего" операнда должна влиять на разрядность результата?

Всего записей: 1635 | Зарегистр. 01-02-2002 | Отправлено: 16:53 21-04-2003
zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вообще задумка в том, чтобы поделить s на d (поксорить) и получить остаток от деления...
 
Добавлено
oio
А ты поксорь столбиком!

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 16:56 21-04-2003
f_serg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zam

Цитата:
вообще задумка в том, чтобы поделить s на d (поксорить) и получить остаток от деления...

a = s % d. Получаем остаток от деления.

Всего записей: 1706 | Зарегистр. 11-09-2002 | Отправлено: 17:02 21-04-2003
zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f_serg
нужно не обычно поделить, а с учетом арифметики по модулю два, т.е. поксорить и получить остаток, вот пример (делим строку 11001101011101 на 1001 по ксору, получаем остаток от деления):
 

Код:
 
1 1 0 0 1 1 0 1 0 1 1 1 0 1
1 0 0 1
   1 0 1 1
   1 0 0 1
        1 0 1 0
        1 0 0 1
             1 1 1 0
             1 0 0 1
                1 1 1 1
                1 0 0 1
                   1 1 0 1
                   1 0 0 1
                      1 0 0 1
                      1 0 0 1
                                 0 1
 
 
отстаток 01- если я не ошибся где - то, он отличается от обычного % - однозначно. как мне реализовать на СИ, что я написал?

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 17:08 21-04-2003 | Исправлено: zam, 17:10 21-04-2003
oio



Дочкин папа
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zam
ты называешь это простым "проксорить"? %)
 
Добавлено
быть может я слишком задаунен к асму

Всего записей: 1635 | Зарегистр. 01-02-2002 | Отправлено: 17:11 21-04-2003
zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oio
тут же все просто, юзается ксор. 8) я сейчас не долго думая нарисую алгоритм работы со строками, но это будет жутко не оптимально, кто думает, что сделать по-умней и как это сделать?

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 17:12 21-04-2003
oio



Дочкин папа
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zam
из топика я этого даже не просёк

Цитата:
 Время работы не существенно, главное, чтобы работало и выдавало результат хотя бы в десятичной (лучше двоичной) с.счисления

а чем в таком случае
тогда чем
Цитата:
 не долго думая нарисую алгоритм..

не подходит

Всего записей: 1635 | Зарегистр. 01-02-2002 | Отправлено: 17:16 21-04-2003
zam

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Погорячился...время все таки важно, а так:

Код:
 
while(строка не пуста)
  while(длина оставшейся части строки > длины делителя)
    if первый символ строки совпадает с 1м символом делителя
      сдвиг строки на 1 влево
    else 1й символ строки равен 1.
 
 

 
в итоге оставшаяся часть и есть остаток от деления. Еще способы?

Всего записей: 185 | Зарегистр. 19-01-2003 | Отправлено: 17:24 21-04-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как на СИ сделать XOR двух строк из 0 и 1?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru