|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.05.2014, 01:14 | #1 |
Пользователь
Регистрация: 31.03.2011
Сообщений: 10
|
Работа с битами.
Здравствуйте. Знаю работа с битами очень оптимизирует программу. Но я не понимаю, как и что работает.
Всякие 0xF, 0xFFFFFFF0 ... сдвиги << и т.д. и т.п. Читал статьи.. Но трудно для понимания. Кто может расписать подробно с примерами и объяснениями каждой мелочи?) |
23.05.2014, 08:20 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Кто сказал что оптимизирует?
Где ты такого начитался?
I'm learning to live...
|
23.05.2014, 08:40 | #3 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Виталик, ну что тут непонятного, вот с таким подходишь к программисту:
и оптимизируешь
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 23.05.2014 в 08:43. |
23.05.2014, 08:43 | #4 |
Форумчанин
Регистрация: 22.12.2011
Сообщений: 378
|
Автор наверно имел ввиду что сдвиг работает быстрее чем умножение и деление. Где-то я об этом тоже читал. Но эта оптимизация очень незначительна. Максимум что можно выиграть это несколько тактов процессора.
К примеру: 4 * 2 будет вычисляться медленнее, чем 4 << 1. Как вы знаете (надеюсь знаете) что любое число состоит из 0 и 1 - битов. 0xF(HEX) = 00001111(BIN) = 15(DEC) 0xFF(HEX) = 11111111(BIN) = 255(DEC) 0xFFFF(HEX) = 1111111111111111(BIN) = 65535(DEC) Сдвиги: ПЕРЕМЕННАЯ << НА СКОЛЬКО БИТОВ СДВИГАЕМ (увеличиваем число) ПЕРЕМЕННАЯ >> НА СКОЛЬКО БИТОВ СДВИГАЕМ (уменьшаем число) Допустим имеется число 8. Его бинарное представление: 00001000. Применяем операцию побитовый сдвиг влево на 2 бита: 8 << 2 Теперь смотрим по порядку, что происходит: 00001000 - исходное число (8) 00100000 - новое число (32) Как видно биты исходного числа переместились на 2 бита вперед.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
Последний раз редактировалось kineziz; 23.05.2014 в 08:57. |
23.05.2014, 09:25 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Оптимизирует объём памяти для хранения булевых переменных. Это актуально, разве, что для ПИК-контроллеров, размер оперативки которых ограничен. Для современных ПК, это не актуально. Разве, что если кусок кода, работает ну в оооочень глубоко вложенном цикле. Да и то, в этом случае, лучше использовать вставку на АСМЕ.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
23.05.2014, 10:41 | #6 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Только он с гатлингом приходит Цитата:
Цитата:
I'm learning to live...
|
|||
23.05.2014, 13:59 | #7 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Не всегда. За универсальность, тоже нужно платить. Функция, сдвигающая байт на два бита, сохраняет в стеке, все шесть регистров, хотя нужно созранить регистр A, выполнить две команды сдвига и восстановить регистр из стека. Вставка на АСМЕ, экономит примерно 10 операций.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
23.05.2014, 16:39 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Ану покажи где ты такое увидел Не я кагбэ не оспариваю, просто не оч. верю что оптимизатор такое вытворяет при обычном сдвиге.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с битами | codermoder | Общие вопросы C/C++ | 2 | 18.11.2011 06:25 |
работа с битами | тотошкин | Общие вопросы C/C++ | 2 | 22.04.2010 12:06 |
Работа с битами. | Masip | Общие вопросы Delphi | 2 | 13.04.2010 13:03 |
Работа с битами | alexmikt | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 25.09.2009 13:24 |
Работа с битами | kesha2008 | Общие вопросы C/C++ | 2 | 24.02.2009 12:05 |