![]() |
|
Модераторы: skyboy |
![]()
|
|
| lankin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 13.12.2006 Репутация: нет Всего: нет |
В общем вот такой интересный вопрос: можно ли в SQL число int конвертировать в двоичную систему и, преобразовав, снова конвертировать в int?
Например, у меня есть число "19". Я хочу его разложить, чтобы в итоге получилось "10011" в двоичной системе. Затем, я хочу добавить в середину, а именно, сместить 3-й символ "0" и вставить свой символ, например "1". Получается вот такое число "100111". В конце снова конвертируем его в int и получаем число "39". В VisualStudio это без проблем делается, а вот в SQL как? Работаю в MS SQL Server2005. Заранее благодарю. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Зачем конвертить?
Можно сразу посчитать
val - исходное значение pos - позиция вставляемого бита (порядковый номер справа налево) bit - значение вставляемого бита Первое слагаемое - гасим все биты правее указаннной позициии и сдвигаем влево Второе слагаемое - гасим все биты левее указанной позиции Третье слагаемое - устанавливаем бит Это сообщение отредактировал(а) Zloxa - 24.11.2008, 13:59 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| lankin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 13.12.2006 Репутация: нет Всего: нет |
Вот такую формулу придумали:
где a-степень, равная тому биту, после которого начинается сдвиг, n-степень, равная a+1, то есть смешение на 1 бит. Работает Добавлено через 6 минут и 9 секунд
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |