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

Поразрядные операции, объясните смысл выражений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Будильник. http://www.cyberforum.ru/cpp-beginners/thread272852.html
Написать программу будильник в С++ .
C++ локаль(locale) int main() { std::locale::global(std::locale("rus")); //std::cout.imbue(std::locale("rus")); std::cout << "привет!"; std::cin.get(); } http://www.cyberforum.ru/cpp-beginners/thread272840.html
C++ генеалогическое дерево в С++
помогите пожалуйста кто-нибудь: Создать систему работы с генеалогическим древом. Решение должно содержать графический интер- фейс, позволяющий сохранять, загружать и редактировать дерево.в С++
C++ Visual C++ vs. Builder C++
Чем может отличаться код написанный на билдере от вижула??? в чем вообще разница?
C++ Работа со СТЕКОМ!!!!!!:) http://www.cyberforum.ru/cpp-beginners/thread272816.html
Создать класс для работы со стеком. Элемент стека – символ. --- Сформировать два стека,содержащие последовательности символов. --- Подсчитать общее число элементов в стеках, предусмотреть восстановление их исходного расположения. Добавлено через 18 часов 3 минуты Создать класс для работы со стеком. Элемент стека – символ. --- Сформировать два стека,содержащие последовательности символов....
C++ Подскажите, пожалуйста, что значат знаки Подскажите, пожалуйста, что значат знаки R, (i & 1) ? 0xF0 : 0x0F, x << ((i & 1) ? 4 : 0) for (int i = 0; i < 8; i++) { // Заменяем 4х-битные кусочки согласно S-блокам int x = R & ((i & 1) ? 0xF0 : 0x0F); // x - 4х-битный кусочек R ^= x; // Обнуляем соответствующие биты x >>= (i & 1) ? 4 : 0; //... подробнее

Показать сообщение отдельно
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
09.04.2011, 14:51     Поразрядные операции, объясните смысл выражений
Например, было число 7, в двоичном представлении выглядит так:
00000111
Теперь применили оператор сдвига >>1. Это значит, что двоичную запись сдвинули на один бит вправо (что аналогично целочисленному делению на 2). Получили
00000011 (правая единичка потерялась)
Это соответствует числу 3 в двоичном представлении. Получили 7/2 = 3

Зачем это надо? Операция сдвига выполняется быстрее чем обычное деление/умножение, соответственно ее использовать выгоднее. Правда, это не всегда заметно, но все-таки, при больших входных данных смысл использовать есть.
 
Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru