Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Протестить бит  [new]
User88
Guest
Собственно интересует как узнать, что число X ( допустим 12029838) n-й бит 1 или 0 ?
Сильно не пинать, на T-SQL не кодю. Надо просто кое что прикрутить.
3 дек 09, 14:16    [8014333]     Ответить | Цитировать Сообщить модератору
 Re: Протестить бит  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DECLARE @X INT=12029838, @n INT=5;
SELECT SIGN(@X & POWER(2, @n));
3 дек 09, 14:21    [8014375]     Ответить | Цитировать Сообщить модератору
 Re: Протестить бит  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
DECLARE @X INT=12029838, @n INT=5;
SELECT SIGN(@X & POWER(2, @n));
Отсчёт бит с 0, естественно.
3 дек 09, 14:21    [8014377]     Ответить | Цитировать Сообщить модератору
 Re: Протестить бит  [new]
Ozzy-Osbourne
Member

Откуда: Balashikha
Сообщений: 139
Для чисел от 0 до 2^62:
with
n as(select i=0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7)
,num as
(select i,b=power( cast(2 as bigint),i) from(select n1.i*8+n0.i i from n n1,n n0 where n1.i*8+n0.i<63)t
)

select v,bitNumber=n.i
      ,bitIsOn=sign(x.v & n.b)
 from(select v=12029838)x
 join num n on n.i<=ceiling(log10(v)/log10(2))
3 дек 09, 14:34    [8014485]     Ответить | Цитировать Сообщить модератору
 Re: Протестить бит  [new]
Протестить бит
Guest
О. Спасибо!
3 дек 09, 15:35    [8015049]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить