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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
28.01.2014, 23:17     Что это за знак >> прочитал что это сдвиг вправо? что он делает #1
int d=6, c=5,f;

f = d >> c;
cout<< f; вывод 0
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gromo
 Аватар для gromo
366 / 265 / 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
у вас это скомпилировалось ?
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 2
28.01.2014, 23:36     Что это за знак >> прочитал что это сдвиг вправо? что он делает #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
По умолчанию это >> сдвиг вправо, а << сдвиг влево. Все данные в памяти хранятся по битам, которые принимают значения либо 0, либо 1. В частности число 6 хранится как "0110". Если Вы сдвигаете его на один разряд вправо, то получаете "0011"=3. А если сдвинуть на 5 разрядов, то будет "0000"=0. Что бы было проще представить, что происходит с точки зрения десятичной арифметики, просто запомните, что операция сдвига на один разряд вправо равносильна делению на два, а влево, соответственно, умножению на два. Вы делите число 6 пять раз на два и, естественно, получаете 0, так как int - целое число. Так как операция сдвига происходит на много быстрее умножения, то она может быть полезна там, где нужно очень много делить или умножать, но только на два в какой-то степени.



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

Не по теме:

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



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

Не по теме:

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

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)...
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 2
29.01.2014, 12:21     Что это за знак >> прочитал что это сдвиг вправо? что он делает #7
Цитата Сообщение от mustimur Посмотреть сообщение
f=d/(2*c).
если точнее то
C++
1
f = d / pow(2,c);

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 12:27     Что это за знак >> прочитал что это сдвиг вправо? что он делает
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
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 секунды
Прости ты прав)
Yandex
Объявления
29.01.2014, 12:27     Что это за знак >> прочитал что это сдвиг вправо? что он делает
Ответ Создать тему
Опции темы

Текущее время: 15:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru