Форум программистов, компьютерный форум CyberForum.ru

Объясните как работают битовые операции C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Олимпиадные задачи по программированию http://www.cyberforum.ru/cpp-beginners/thread738552.html
Пробуйте :) Окружной этап всероссийской олимпиады школьников по информатике Москва, 2 декабря 2012 Во всех задачах входные данные вврдятся с клавиатуры (стандартного ввода), результат выводится на экран (стандартный вывод). Проверять корректность входных данных не нужно. Ограничение по времени работы программы во всех задачах: 1 секунда. Для сдачи решений в тестирующую систему нужно...
C++ калькулятор делаю калькулятор...столкнулся с проблемкой...при вычислении чисел с плавающей точкой...как можно реализовать http://www.cyberforum.ru/cpp-beginners/thread738545.html
Задача с треугольником, найдите ошибку C++
Собственно не понятно, почему пишет ошибку, помогите пжлст) #include<iostream.h> #include<math.h> const float coef=0.5; float a,b,c,p,s; bool r; main() { cout << "Задайте длины сторон:*\n";
C++ Немного изменил код программы и она перестала работать. Не пойму почему.
Программа работала, но нужно было вынести вывод суммы в main( до этого выводилась в sum). Для этого удалил строчку из sum, и добавил новую строку cout<< Sum(n,a); в main, теперь выдает ошибку. #include<iostream> #include<locale> #define N 100 using namespace std; void inMas1(int& n,int a)
C++ Начинаю компиляцию, открывается math.h и указывает на ошибку. http://www.cyberforum.ru/cpp-beginners/thread738533.html
Начинаю компиляцию, открывается math.h и указывает на ошибку. Не могу понять причину. Подскажите, пожалуйста.#include <iostream> #include <math.h> using namespace std; double root(double x, double y) { double a, b; cout << " Решим уравнение " << endl; cout << " Введите значение x " << endl; cin >> x;
C++ Найти сумму ряда Необходимо разработать алгоритм и программу решения задачи подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.12.2012, 19:01     Объясните как работают битовые операции C++
Цитата Сообщение от necheyhin_a_v Посмотреть сообщение
int a //хранится какое-либо значение, в котором младшие 2 бита устанавливаем в 1
int b=2; // в двоичном представлении 0000 0010
int c=1; // в двоичном представлении 0000 0001
a |= b>c; //Как отработает в данном случае эта последовательность операторов?
Фигня какая то, левый операнд интовый, а правый булевый. Надо так:
C++
1
2
3
4
int a //хранится какое-либо значение, в котором младшие 2 бита устанавливаем в 1
int b=2; // в двоичном представлении 0000 0010
int c=1; // в двоичном представлении 0000 0001
a |= b|c;
. В последней строке сначала вычисляется правый операнд |=, это b|c, в b установлен предпоследний бит, в c последний, значит в результате установятся оба, остальные биты сброшены в обоих операндах, значит сбросятся и в результате, а потом выполнится a|правый опернд оператора |=, результат попадёт в a. Не важно, чему равны остальные биты, где ноли, там ноли в обоих операндах и получаются ноли, где единицы, там в a единицы и в результате будут единицы. Не важно, что в этих позициях во втором операнде, получатся единицы, так как по одной единице в этих позициях уже есть. Так же не важно, чему равны младшие 2 бита a, по одной единице в них уже есть в правом операнде и получатся единицы. Но если поставить и другие единицы в правом операнде, то если в a там ноли, то тогда важно, что в правом операнде, а там мы договорились поставить единицы, ну так они и будут. То есть ноли в этих разрядах поменяются, а менять их не надо при любых исходных значениях.
 
Текущее время: 13:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru