Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
protoboll
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
#1

Провести операцию эквивалентности над двоичными числами - C++

08.07.2014, 09:54. Просмотров 676. Ответов 14
Метки нет (Все метки)

Всем привет. Мне нужно провести операцию эквивалентности над двоичными числами. проблема в том, что я не знаю, как написать в С++ операцию эквивалентности
Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2014, 09:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Провести операцию эквивалентности над двоичными числами (C++):

Арифметичиские операции над двоичными числами - C++
Всем привет)) хочу показать то, что у меня вышло по данному вопросу. А вопрос был таким (сам себе его поставил): сделать арифметичиские...

Провести операцию над множествами без использования стандартных алгоритмов - C++
Подскажите как провести операцию над множествами без использования стандартных алгоритмов: set_union (объединение), set_difference...

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

Найти сумму двух не знаковых чисел, а затем провести операцию побитового «И» над суммой и вторым числом - C++
Два не знаковых целых числа вводятся с клавиатуры в десятичной системе исчисления. Найти их сумму, а затем провести операцию побитового «И»...

Арифметические операции с двоичными числами - C++
Вопрос такой. Вот задание: Двоичные числа (разбор строки, формирование строки, операции сложения, вычитания, разные варианты вывода...

Написать программу, которая демонстрирует выполнение операций с 12-разрядными двоичными числами - C++
У меня такое задание: Написать программу, которая демонстрирует выполнение операций с 12-разрядными двоичными числами....

14
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
08.07.2014, 10:09 #2
Цитата Сообщение от protoboll Посмотреть сообщение
провести операцию эквивалентности
А что это?
1
protoboll
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
08.07.2014, 10:12  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
А что это?
в алгебре логики 1 <-->1 = 1
0 <--> 1 = 0
1 <--> 0 = 0
0 <--> 0 = 1
в логике стрелочками обозначается, в с++ не знаю как
0
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
08.07.2014, 10:13 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    int a = 72;
    int b = 72;
 
    if (a^b)
        cout << "Nope" << endl;
    else
        cout << "Numbers are same!" << endl;
}

тыц
1
protoboll
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
08.07.2014, 10:16  [ТС] #5

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    int a = 72;
    int b = 72;
 
    if (a^b)
        cout << "Nope" << endl;
    else
        cout << "Numbers are same!" << endl;
}
это почти то, что нужно, только в обратную сторону) хотя, видимо, нету нужного, судя по тому, что ты кинул. спасибо и на том, мб подстроюсь)
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
08.07.2014, 10:21 #6
Без понятия что там у вас считается эквивалентностью, но например в STL эквивалентность определяется как-то так:
C++
1
2
3
4
template <typename T>
bool eq( const T& a1, const T& a2 ) {
  return !( a1 < a2 ) && !( a2 < a1 );
}
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
08.07.2014, 10:31 #7
Цитата Сообщение от protoboll Посмотреть сообщение
в логике стрелочками обозначается, в с++ не знаю как
словами опиши
Цитата Сообщение от protoboll Посмотреть сообщение
1 <-->1 = 1
0 <--> 1 = 0
1 <--> 0 = 0
0 <--> 0 = 1

инверсия "Исключающие ИЛИ" что ли?
0
protoboll
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
08.07.2014, 10:34  [ТС] #8
Цитата Сообщение от ValeryS Посмотреть сообщение
словами опиши



инверсия "Исключающие ИЛИ" что ли?
http://ru.wikipedia.org/wiki/Эквиваленция
вот, просто везде по разному называют, а я привык эквивалентностью называть.
хотя я с названием накосячил. там даже написано, что нельзя путать эквивалентность с эквиаленцией
мой косяк
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
08.07.2014, 10:53 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
так бы и сказал сразу

if(!(a^b))

"Исключающая ИЛИ" она же "XOR" в Си определяется так ^

тебе нужна обратная "не" "инверсия" !

Код
a    b    ^     !^
0    0    0       1
0    1    1       0
1    0    1       0
1    1    0       1
1
protoboll
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
08.07.2014, 10:54  [ТС] #10
Цитата Сообщение от ValeryS Посмотреть сообщение
так бы и сказал сразу

if(!(a^b))

"Исключающая ИЛИ" она же "XOR" в Си определяется так ^

тебе нужна обратная "не" "инверсия" !

Код
a    b    ^     !^
0    0    0       1
0    1    1       0
1    0    1       0
1    1    0       1
Спасибо.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
08.07.2014, 10:57 #11
А гораздо проще и логичней, по моему
сравнить эти значения

C++
1
a==b
0
protoboll
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
08.07.2014, 10:58  [ТС] #12
Цитата Сообщение от ValeryS Посмотреть сообщение
А гораздо проще и логичней, по моему
сравнить эти значения

C++
1
a==b
не, там надо именно так, как ты выше описал, там сложнее момент будет. долго описывать
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
08.07.2014, 11:58 #13
Цитата Сообщение от protoboll Посмотреть сообщение
не, там надо именно так, как ты выше описал,
Я ошибся назвав ! инверсией это отрицание, а инверсия это тильда(~)

хотя и то и другое "Не"
разница вот в чем
возьмем число 5 0000 0101
!5=0 5 это не нулевое значение значит приводится к true !true=false т.е равно 0
логическая операция

~5=-6

0000 0101= 1111 1010 побитовая инверсия

так что может тебе нужно
C++
1
~(a^b)
1
protoboll
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
08.07.2014, 12:01  [ТС] #14
спасибо, а не подскажешь еще 1 момент. я читаю файл, без разницы какой, и мне нужно разбить его на строки длинной 4 байта. те мне нужен фрагмент разбивающий строку.
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
08.07.2014, 12:09 #15
могу подсказать такой путь
вводишь переменную типа unsigned int и считываешь в неё
unsigned int в 32 битных системах как раз 4 байта

или чтобы не завязываться на размер int объяви структуру из 4 unsigned char

unsigned char как раз по размеру байт
0
08.07.2014, 12:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2014, 12:09
Привет! Вот еще темы с ответами:

Написать программу для работы с двоичными числами (сумма, вычитание, умножение и деление) - C++
Доброго времени суток. Задание такое: Разработать программный продукт для осуществления арифметических операций над двоичными числами. При...

Строки. Произвести над каждым символом операцию побитового И - C++
Ввести в консоли строку из пяти символов, а затем произвести над каждым символом операцию побитового И (AND – в C++ &amp;) со вторым операндом...

Написать программу на с++, которая выполняет операцию над матрицей целых чисел - C++
Мне нужно написать программу, которая выполняет операцию над матрицей целых чисел. Матрицу следует размещать в динамической памяти. Размер...

Дан массив. Провести арифметические действия над его элементами - C++
Дан массив. Все его элементы: а) увеличить в 2 раза; б) уменьшить на число А; в) разделить на 1 элемент.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru