|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.12.2011, 19:42 | #1 |
юзер
Форумчанин
Регистрация: 22.12.2010
Сообщений: 245
|
назначение функций SHR и SHL
обьясните назначение функций shr и shl. И зачем нужно выполнять сдвиги?
|
23.12.2011, 00:57 | #2 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
2)быстрое умножение/деление на числа кратные двум(целочисленное умножение/деление) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
23.12.2011, 09:51 | #3 | |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
Цитата:
а ещё вы будете удивлены что есть ещё целых шесть команд сдвига sar, sal, rcl, rcr, rol, ror.
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
|
23.12.2011, 11:09 | #4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
и это еще не всё! Есть также команды SHLD (Сдвиг двойного слова влево = SHIFT Left Double word) и SHRD (Сдвиг двойного слова вправо = SHIFT Right Double word),
а также PSLLx, PSLLDQ (Параллельный логический сдвиг влево = Parallel Shift Left Logical) MMX psll(w/d/q) mmx, count(imm/mmx/m64) SSE2 psll(w/d/q) xmm, count(imm/xmm/m128) SSE2 pslldq xmm, count(imm) MMX-команды сдвига (PSLL(w/d/q)) выполняют сдвиг каждого элемента данных (упакованных 16-, 32- или 64-разрядных слов) в операнде DEST на величину, задаваемую операндом COUNT. Освобождающие в результате сдвига младшие биты упакованных элементов операнда DEST заполняются нулями. Операнд COUNT может быть непосредственным значением либо находится в MMX-регистре или в памяти. Операнд DEST должен находиться в MMX-регистре. SSE2-команды сдвига (PSLL(w/d/q)) выполняют сдвиг каждого элемента данных (упакованных 16-, 32- или 64-разрядных слов) в операнде DEST на величину, задаваемую операндом COUNT. Освобождающие в результате сдвига младшие биты упакованных элементов операнда DEST заполняются нулями. Операнд COUNT может быть непосредственным значением либо находится в XMM-регистре или в памяти. Операнд DEST должен находиться в XMM-регистре. PSRLx, PSRLDQ (Параллельный логический сдвиг вправо = Parallel Shift Right Logical ) MMX psrl(w/d/q) mmx, count(imm/mmx/m64) SSE2 psrl(w/d/q) xmm, count(imm/xmm/m128) SSE2 psrldq xmm, count(imm) MMX-команды сдвига (PSRL(w/d/q)) выполняют сдвиг каждого элемента данных (упакованных 16-, 32- или 64-разрядных слов) в операнде DEST на величину, задаваемую операндом COUNT. Освобождающиеся в результате сдвига старшие биты упакованных элементов операнда DEST заполняются нулями. Операнд COUNT может быть непосредственным значением, либо находится в MMX-регистре или в памяти. Операнд DEST должен находиться в MMX-регистре. SSE2-команды сдвига (PSRL(w/d/q)) выполняют сдвиг каждого элемента данных (упакованных 16-, 32- или 64-разрядных слов) в операнде DEST на величину, задаваемую операндом COUNT. Освобождающиеся в результате сдвига старшие биты упакованных элементов операнда DEST заполняются нулями. Операнд COUNT может быть непосредственным значением, либо находится в XMM-регистре или в памяти. Операнд DEST должен находиться в XMM-регистре. Логический сдвиг содержимого XMM-регистра вправо на imm×8 бит величина сдвига задается не в битах (как обычно), а в байтах. |
23.12.2011, 15:27 | #5 |
юзер
Форумчанин
Регистрация: 22.12.2010
Сообщений: 245
|
|
23.12.2011, 17:24 | #6 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
битовые сдвиги нужны не только для умножения и деления
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
23.12.2011, 17:26 | #7 |
юзер
Форумчанин
Регистрация: 22.12.2010
Сообщений: 245
|
тогда для чего они нужны?
Последний раз редактировалось TotKtoNado; 23.12.2011 в 17:51. |
23.12.2011, 17:54 | #8 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Цитата:
например еще при бинарных полях в структуре нужны. вообще, раз они вам были не нужны, то значит не было такой задачи, где они нужны. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|||
23.12.2011, 18:19 | #9 |
юзер
Форумчанин
Регистрация: 22.12.2010
Сообщений: 245
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi: аппроксимация функций методом базиса из финитных функций | Denna | Помощь студентам | 1 | 12.03.2012 19:23 |
Команда SHL | firephenix | Помощь студентам | 1 | 20.03.2011 22:37 |
операция SHL | Anohorett | Общие вопросы C/C++ | 2 | 02.12.2009 23:27 |
Построение графиков функций С++ (методы аппроксимации функций) | amdbodia | Общие вопросы C/C++ | 0 | 24.05.2009 15:28 |
использование функций в качестве параметров других функций | mono | Помощь студентам | 0 | 20.04.2009 18:25 |