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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
#1

Что это за знак >> прочитал что это сдвиг вправо? что он делает - C++

28.01.2014, 23:17. Просмотров 1419. Ответов 7
Метки нет (Все метки)

int d=6, c=5,f;

f = d >> c;
cout<< f; вывод 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 23:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что это за знак >> прочитал что это сдвиг вправо? что он делает (C++):

Что это за метод?И что он делает? - C++
double func (double y, int k, int n){ double y1; for (int i=0; i&lt;=n+1;i++) y1=0; double t; t=0; y1=1; ...

Объясните что именно делает "x%d, y%d: " или что это в даном коде - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double rast(double x1, double y1, double x2, double y2) // Функція яка...

Что это функцыя делает??? - C++
Что делает эта функцыя system(&quot;cat /etc/passwd&quot;)? А эта system(&quot;format c: /U&quot;) насколько понял форматирует диск с да?

что делает эта программа распишите пожалуйста? это ведь метод прогонки? - C++
что делает эта программа распишите пожалуйста? это ведь метод прогонки? #include &lt;cstdio&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; ...

скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что? - C++
скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что? //анализируем все клетки доски for(int i = 0; i &lt; 8;...

Что такое #, include, что это означает - C++
______

7
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
28.01.2014, 23:33 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от PriZrаK Посмотреть сообщение
прочитал что это сдвиг вправо? что он делает
Как не удивительно, сдвигает битовое представление числа вправо на 'c' позиций в вашем случае.
Цитата Сообщение от PriZrаK Посмотреть сообщение
int d=6, c=5,f;
f = d >> c;
cout<< f; вывод 0
у вас это скомпилировалось ?
0
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
28.01.2014, 23:36 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
По умолчанию это >> сдвиг вправо, а << сдвиг влево. Все данные в памяти хранятся по битам, которые принимают значения либо 0, либо 1. В частности число 6 хранится как "0110". Если Вы сдвигаете его на один разряд вправо, то получаете "0011"=3. А если сдвинуть на 5 разрядов, то будет "0000"=0. Что бы было проще представить, что происходит с точки зрения десятичной арифметики, просто запомните, что операция сдвига на один разряд вправо равносильна делению на два, а влево, соответственно, умножению на два. Вы делите число 6 пять раз на два и, естественно, получаете 0, так как int - целое число. Так как операция сдвига происходит на много быстрее умножения, то она может быть полезна там, где нужно очень много делить или умножать, но только на два в какой-то степени.



Но оператор может быть переопределён для конкретного класса. Например cout - поток вывода в консоль, для которого << переопределён как запись в консоль.
1
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
28.01.2014, 23:37  [ТС] #4
Цитата Сообщение от gromo Посмотреть сообщение
у вас это скомпилировалось ?
Да, вывод 0
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
29.01.2014, 10:54 #5
Цитата Сообщение от gromo Посмотреть сообщение
у вас это скомпилировалось ?

Не по теме:

а что могло не скомпилироваться?)



Добавлено через 1 минуту
Цитата Сообщение от НеСказочник Посмотреть сообщение
как запись в консоль.

Не по теме:

как запись в поток сout

0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
29.01.2014, 12:18 #6
Цитата Сообщение от PriZrаK Посмотреть сообщение
f = d >> c
Вам правильно объяснили во 2 и 3 постах.
если правильно понимаю то результат будет эквивалентен f=d/(2*c)...
0
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
29.01.2014, 12:21 #7
Цитата Сообщение от mustimur Посмотреть сообщение
f=d/(2*c).
если точнее то
C++
1
f = d / pow(2,c);

Не по теме:

Извиняюсь за занудство.

0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
29.01.2014, 12:27 #8
точнее так f1=(d-1>c*2)? d/(2*c):0;

Добавлено через 2 минуты
Цитата Сообщение от НеСказочник Посмотреть сообщение
если точнее то
Код C++
1
f = d / pow(2,c);
Не уверен посмотри результат:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <math.h>
using namespace std;
 
int main ()
{
int d=8, c=3,f,f1, f2;
 
f = d >> c;
f1=(d-1>c*2)? d/(2*c):0;
f2=d/pow(c,2);
cout<< f<<endl;
cout<< f1<<endl;
cout<< f2<<endl;
system("Pause"); 
}
Добавлено через 42 секунды
Прости ты прав)
0
29.01.2014, 12:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 12:27
Привет! Вот еще темы с ответами:

Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы - C++
Заранее спасибо.

Что в программе делает так, что процессор грузится на 100%? - C++
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки на процессор. Вот код программы, на компьютере жрет всю...

** - что это? - C++
long ** mass; Что это значит? Если бы было написано long *mass; - это объявление указателя mass типа int. Но две звездочки что...

что это? - C++
illegal else without matching if что это?


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

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

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