0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
1

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

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

Всем привет. Мне нужно провести операцию эквивалентности над двоичными числами. проблема в том, что я не знаю, как написать в С++ операцию эквивалентности
Заранее спасибо
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2014, 09:54
Ответы с готовыми решениями:

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

Провести операцию над множествами без использования стандартных алгоритмов
Подскажите как провести операцию над множествами без использования стандартных алгоритмов:...

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

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

14
Модератор
Эксперт по электронике
8698 / 6496 / 879
Регистрация: 14.02.2011
Сообщений: 22,726
08.07.2014, 10:09 2
Цитата Сообщение от protoboll Посмотреть сообщение
провести операцию эквивалентности
А что это?
1
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
2548 / 1207 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
08.07.2014, 10:13 4
Лучший ответ Сообщение было отмечено protoboll как решение

Решение

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
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
710 / 282 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
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
Модератор
Эксперт по электронике
8698 / 6496 / 879
Регистрация: 14.02.2011
Сообщений: 22,726
08.07.2014, 10:31 7
Цитата Сообщение от protoboll Посмотреть сообщение
в логике стрелочками обозначается, в с++ не знаю как
словами опиши
Цитата Сообщение от protoboll Посмотреть сообщение
1 <-->1 = 1
0 <--> 1 = 0
1 <--> 0 = 0
0 <--> 0 = 1

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



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

Решение

так бы и сказал сразу

if(!(a^b))

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

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

Код
a    b    ^     !^
0    0    0       1
0    1    1       0
1    0    1       0
1    1    0       1
1
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
Модератор
Эксперт по электронике
8698 / 6496 / 879
Регистрация: 14.02.2011
Сообщений: 22,726
08.07.2014, 10:57 11
А гораздо проще и логичней, по моему
сравнить эти значения

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

C++
1
a==b
не, там надо именно так, как ты выше описал, там сложнее момент будет. долго описывать
0
Модератор
Эксперт по электронике
8698 / 6496 / 879
Регистрация: 14.02.2011
Сообщений: 22,726
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
0 / 0 / 0
Регистрация: 08.07.2014
Сообщений: 8
08.07.2014, 12:01  [ТС] 14
спасибо, а не подскажешь еще 1 момент. я читаю файл, без разницы какой, и мне нужно разбить его на строки длинной 4 байта. те мне нужен фрагмент разбивающий строку.
0
Модератор
Эксперт по электронике
8698 / 6496 / 879
Регистрация: 14.02.2011
Сообщений: 22,726
08.07.2014, 12:09 15
могу подсказать такой путь
вводишь переменную типа unsigned int и считываешь в неё
unsigned int в 32 битных системах как раз 4 байта

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

unsigned char как раз по размеру байт
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2014, 12:09
Помогаю со студенческими работами здесь

Выполнить указанную операцию над двумя числами
Напишите программу принимающую на выходе символ оператора с двумя опредантами и выводящую на экран...

Действия над двоичными числами
Провести сложение,вычитание,умножение и деление двоичных чисел 1010 и 10 ...

Создать класс для работы с двоичными числами реализовать в нем операцию сложения, умножения, вычитания
создать класс для работы с двоичными числами реализовать в нем операцию сложения умнежения вычитания

Выполнить арифметические операции над двоичными числами с плавающей точкой в дополнительном коде: С=А+В
Выполнить арифметические операции над двоичными числами с плавающей точкой в дополнительном коде:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru