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

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

Войти
Регистрация
Восстановить пароль
 
SaweR
29 / 29 / 1
Регистрация: 29.09.2009
Сообщений: 177
#1

Битовая операция "ИЛИ" эквивалентна операции сложения для двух целых чисел? - C++

20.04.2014, 18:35. Просмотров 903. Ответов 7
Метки нет (Все метки)

Всем привет. Скажите, пожалуйста, битовая операция "ИЛИ" эквивалентна операции сложения для двух целых чисел?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 18:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовая операция "ИЛИ" эквивалентна операции сложения для двух целых чисел? (C++):

Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/". - C++
пожалуйста-помогите написатьпрограмму!!! сижу на экзамене!!! вот само задание: создать класс комплексных чисел и ввести операции: "+",...

Для массива из 10 чисел проверить, есть ли в нем два одинаковых числа и напечатать "да" или "нет" - C++
void check_same(const int* a) { for (const int* p = a; p < a + 9; p++) for (const int* q = p+1; q < a + 10; q++) ...

Написать программу умножения двух целых чисел "в столбик" - C++
Числа задаются в программе в виде двух массивов цифр. Вот мой код, но он почему-то не работает. Что не так? #include <iostream> ...

Создать список из целых чисел. После каждого элемента, равного "х" вставить элемент, равный "у" - C++
Задача со стеком. Создать список из целых чисел. После каждого элемента,равного х вставить элемент,равный у. какое условие нужно поменять...

Написать условие "произведение двух целых чисел больше 30, и хотя бы один из сомножителей больше 8" - C++
2) Напишите в виде логического выражения условие: произведение двух целых чисел больше 30, и хотя бы один из сомножителей больше 8.

Перегрузка операторов для класса "множество целых чисел" - C++
Собственно, в этом и вопрос. Как перегрузить операторы "+" и "-" для объединение и разности двух множеств?

7
stima
493 / 343 / 43
Регистрация: 22.03.2011
Сообщений: 1,104
Завершенные тесты: 2
20.04.2014, 18:41 #2
С какого перепугу?
1
Supernatural
301 / 156 / 29
Регистрация: 22.11.2010
Сообщений: 1,554
20.04.2014, 18:46 #3
ИЛИ подразумевается выбор одного из двух чисел, сложение же операцию И.
почитай булевую математику.
0
SaweR
29 / 29 / 1
Регистрация: 29.09.2009
Сообщений: 177
20.04.2014, 19:11  [ТС] #4
Цитата Сообщение от Supernatural Посмотреть сообщение
ИЛИ подразумевается выбор одного из двух чисел
C++
1
auto v = 1024 | 8192; // 9216 = 1024 + 8192
Где тут выбор одного из чисел?
0
IrineK
Заблокирован
20.04.2014, 19:12 #5
Побитовое ИЛИ (OR)
0011
0101
0111

Сложение по модулю два (исключающее ИЛИ) (XOR)
0011
0101
0110
XOR является сложением в кольце вычетов по модулю два.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
21.04.2014, 00:10 #6
Цитата Сообщение от SaweR Посмотреть сообщение
C++
1
auto v = 1024 | 8192; // 9216 = 1024 + 8192
Вот и выросло поколение, которое использует стандарт C++11 и при этом ничего не знает про двоичные операции.
Попробуйте таким образом "сложить" одинаковые числа например.
1
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
21.04.2014, 01:15 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Supernatural Посмотреть сообщение
ИЛИ подразумевается выбор одного из двух чисел, сложение же операцию И.
почитай булевую математику.
Сами-то её читали - ИЛИ, иначе - дизъюнкция, собственно - логическое сложение. Тогда как И, иначе - конъюнкция - логическое умножение.

А по теме, нет. Не эквивалентна. Побитовое ИЛИ: название говорит само за себя - результат есть набор бит, где каждый из них есть дизъюнкция соответствующих битов операндов. Сложение - более сложная операция, так как в случае, если два бита в каком-то разряде одинковы, происходит переполнение разряда: инкремент следующего и обнуление текущего. Так что это разные операции, хотя чем-то они всё же похожи.

Небольшое лирическое отсутпление: если внезапно возник вопрос, а на кой они чёрт, то вот ответ: есть такие перменные - маски. Для экономии места в эру динозавров однобитовые флаги склеивали в один аргумент - dwFlags, например (где dw - double word - двойное слово - два байта - шестнадцать бит - до шестнадцати флагов). Собственно, в наш современный век, когда на питонах и джавах пишут игры и многомиллионные сервисы, такая дикость уже не сильно требуется, но как дань уважения тем динозаврам, что создали столь монструозный язык, в новых редакциях эту операцию всё же предпочитают оставить. Но вообще, можно ведь и складывать флаги - суть та же (ибо флаги - разряды и так разные, а для переменных, где единицы стоят на разных позициях - операции дают всё же одинаковый вариант, но НЕ всегда). Ну тут снова проблема в том, что в те времена ИИ ещё не был создан и компьютер сам не мог понять, что ему быстрее, как и когда делать, он был глуп и выполнял всё не отступая от кода ни на шаг. Сегодня же, везде где надо, компилятор сам сообразит как лучше. Да и разница между побитовым сложением и обычным сложением нет никакой. Абсолютно никакой.
2
SaweR
29 / 29 / 1
Регистрация: 29.09.2009
Сообщений: 177
21.04.2014, 09:30  [ТС] #8
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Но вообще, можно ведь и складывать флаги
Вот я так тоже и подумал, а потом почитал про битовое ИЛИ и понял что это не так…
В общем, меня эти флаги ввели в заблуждение. Теперь я буду знать точно, что такая склейка используется для экономии трафика.
0
21.04.2014, 09:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 09:30
Привет! Вот еще темы с ответами:

Ввести класс для работы с объектом "множество целых чисел" - C++
6)Ввести класс для работы с объектом "множество целых чисел".Реализовать: 1)пересечение двух множеств 2)добавление элемента во...

Для последовательности целых, оканчивающейся "8", определить число чисел, больших первого введенного числа - C++
Помогите, пожалуйста, с заданием. Для последовательности целых чисел, оканчивающихся числом 8, определить количество чисел, больших...

Логическая операция "Исключающее Или" - C++
Нужно реализовать функцию исключающего или. Почему то не компилируется, пишет что функция не принимает двух аргументов: using namespace...

Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел - C++
Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел:...


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

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

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