Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2010, 10:57   #1
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию Операции "&=", "<<="

Доброго дня (ночи)
В тестировании по С++ столкнулся с такими вопросами
Цитата:
Чему равно значение y после: int y=2, y&=1;

Чему равно значение y после: int y=4, y<<=2;
Есть предположение, что в первом вопросе это побитовое копировани (так ли это?). Воторой вообще не пойму. MS VS 2010 на такие строки выдает ошибку. Подскажите, что означают эти операции?
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 21.10.2010, 11:13   #2
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Цитата:
Чему равно значение y после: int y=2, y&=1;
y=2; Представляем в бинарной системе. y=10;
&= побитовое 'И'. 1 представим как 01. Теперь
1 & 0 -> 0
0 & 1 -> 0
=> y=0;
Цитата:
Чему равно значение y после: int y=4, y<<=2;
Опять представляем число 4 в бинарной системе. y=100;
'<<=2' означает сдвиг влево на 2 разряда. => y=10000; в десятичной системе у=16;
Кстати, это самый быстрый способ созведения в степень.
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 21.10.2010, 12:09   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Кстати, это самый быстрый способ созведения в степень.
Только для степеней двойки (на всякий случай уточню, чтоб не плодить возможное недопонимание)
А вообще операции вида x @= y; означают x = x @ y; А дальше пляшем от значения оператора @.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.10.2010, 12:32   #4
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Спасибо!
Правильно ли я понял если int y=3, y<<=3;
то у=11 после сдвига 11000 что равно 24.
или сдвиг возможно делать только на два разряда?
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 21.10.2010, 12:43   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Все правильно. А сдвиг можете делать какой хотите, главное - за размер числа не вылезти.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.10.2010, 12:48   #6
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Спасибо за помощь
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
Что происходит на странице с такие JS: <script src="cmp.php?complete&amp;" id="las..." ...>? TwiX JavaScript, Ajax 0 05.02.2010 17:38
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04