Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
-27 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 145
1

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

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

int d=6, c=5,f;

f = d >> c;
cout<< f; вывод 0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2014, 23:17
Ответы с готовыми решениями:

Я не могу понять что делает данная программа. Точнее что делают функции используемые в это коде
#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;ctime&gt; using namespace std; int g(int a, int...

Что это такое и что оно делает?
что это такое и что оно делает?

Что это за зверь такой? и зачем он это делает?
Посмотрите страничку. http://clubs.ya.ru/4611686018427401587/rep...&amp;ncrnd=3152 Как я понимаю...

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

7
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
28.01.2014, 23:33 2
Лучший ответ Сообщение было отмечено PriZrаK как решение

Решение

Цитата Сообщение от PriZrаK Посмотреть сообщение
прочитал что это сдвиг вправо? что он делает
Как не удивительно, сдвигает битовое представление числа вправо на 'c' позиций в вашем случае.
Цитата Сообщение от PriZrаK Посмотреть сообщение
int d=6, c=5,f;
f = d >> c;
cout<< f; вывод 0
у вас это скомпилировалось ?
0
59 / 47 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
28.01.2014, 23:36 3
Лучший ответ Сообщение было отмечено PriZrаK как решение

Решение

По умолчанию это >> сдвиг вправо, а << сдвиг влево. Все данные в памяти хранятся по битам, которые принимают значения либо 0, либо 1. В частности число 6 хранится как "0110". Если Вы сдвигаете его на один разряд вправо, то получаете "0011"=3. А если сдвинуть на 5 разрядов, то будет "0000"=0. Что бы было проще представить, что происходит с точки зрения десятичной арифметики, просто запомните, что операция сдвига на один разряд вправо равносильна делению на два, а влево, соответственно, умножению на два. Вы делите число 6 пять раз на два и, естественно, получаете 0, так как int - целое число. Так как операция сдвига происходит на много быстрее умножения, то она может быть полезна там, где нужно очень много делить или умножать, но только на два в какой-то степени.



Но оператор может быть переопределён для конкретного класса. Например cout - поток вывода в консоль, для которого << переопределён как запись в консоль.
1
-27 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 145
28.01.2014, 23:37  [ТС] 4
Цитата Сообщение от gromo Посмотреть сообщение
у вас это скомпилировалось ?
Да, вывод 0
0
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
29.01.2014, 10:54 5
Цитата Сообщение от gromo Посмотреть сообщение
у вас это скомпилировалось ?

Не по теме:

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



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

Не по теме:

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

0
319 / 225 / 73
Регистрация: 22.11.2013
Сообщений: 856
Записей в блоге: 1
29.01.2014, 12:18 6
Цитата Сообщение от PriZrаK Посмотреть сообщение
f = d >> c
Вам правильно объяснили во 2 и 3 постах.
если правильно понимаю то результат будет эквивалентен f=d/(2*c)...
0
59 / 47 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
29.01.2014, 12:21 7
Цитата Сообщение от mustimur Посмотреть сообщение
f=d/(2*c).
если точнее то
C++
1
f = d / pow(2,c);

Не по теме:

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

0
319 / 225 / 73
Регистрация: 22.11.2013
Сообщений: 856
Записей в блоге: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2014, 12:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Объясните что именно делает "x%d, y%d: " или что это в даном коде
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double rast(double x1, double y1,...

Что делает это выражение?
a присваевается а?

Что делает это код?
Мне не совсем понятно это код проверяет данные на наличие перменной. Если перменной нет то выводит...

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


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

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

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