![]() |
|
Модераторы: bsa |
![]()
|
|
| pilotnet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
как реализовать логический сдвиг вправо на с/с++ ?
желательно через темплейт // Сдвиг вправо для отрицательного числа -21 -21 >>> 00 = 11111111111111111111111111101011 = -21 -21 >>> 01 = 01111111111111111111111111110101 = 2147483637 -21 >>> 02 = 00111111111111111111111111111010 = 1073741818 -21 >>> 03 = 00011111111111111111111111111101 = 536870909 -21 >>> 04 = 00001111111111111111111111111110 = 268435454 -21 >>> 05 = 00000111111111111111111111111111 = 134217727 Это сообщение отредактировал(а) pilotnet - 11.8.2010, 10:16 |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
А зачем что то реализовывать? Ведь есть же оператор ">>".
Это сообщение отредактировал(а) UniBomb - 11.8.2010, 10:28 |
|||
|
||||
| pilotnet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
оператор >> арифметический сдвиг
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
pilotnet, что еще за арифметический? Двоичный сдвиг это. То, что вы и просите.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
хорошо, а если так:
тогда знаковый бит будет обнуляться. |
|||
|
||||
| pilotnet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
http://ru.wikipedia.org/wiki/Битовый_сдвиг |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
pilotnet, я хоть убей не вижу разницы между ним и тем, что вы написали.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
В общем вот что получилось
Правда нет проверки на количество сдвигаемых бит, но это лирика. |
|||
|
||||
| pilotnet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
спасибо работает Вот что еще с темплейтами получилось
|
|||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Итерация и, тем более, рекурсия здесь явно ни к чему. Компилятор может сделать это в статике. Результат - одна инструкция в исполняемом файле (без вызова функции)... Это сообщение отредактировал(а) Леопольд - 11.8.2010, 12:10 -------------------- вопросов больше чем ответов |
||||
|
|||||
| pilotnet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
||||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Это сообщение отредактировал(а) Леопольд - 11.8.2010, 12:54 -------------------- вопросов больше чем ответов |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |