Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Перевод числа в двоичную сс  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
Всем привет.
Подскажите, как можно реализовать перевод целого десятичного числа в двоичную систему счисления. Может функции в SQL есть стандартные?
22 авг 11, 13:19    [11156493]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
U_rtqwec,

Для чего вам?
22 авг 11, 13:27    [11156561]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
Glory
Member

Откуда:
Сообщений: 104751
U_rtqwec
как можно реализовать перевод целого десятичного числа в двоичную систему счисления

select cast(256 as varbinary(50))
22 авг 11, 13:33    [11156624]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
В общем, программа генерирует двоичное число на основании выставленных галочек на форме программы. То есть галочка стоит это 1, галочки нет это 0. Затем она переводит это число в десятичную СС и вставляет в таблицу. Задача определить выставлена ли вторая галочка на форме. Второй галочке соответствует 0 или 1 в предпоследнем разряде двоичного числа. Как-то так.
22 авг 11, 13:39    [11156676]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
Glory
Member

Откуда:
Сообщений: 104751
U_rtqwec
В общем, программа генерирует двоичное число на основании выставленных галочек на форме программы. То есть галочка стоит это 1, галочки нет это 0. Затем она переводит это число в десятичную СС и вставляет в таблицу. Задача определить выставлена ли вторая галочка на форме. Второй галочке соответствует 0 или 1 в предпоследнем разряде двоичного числа. Как-то так.

Для этого не нужно ничего никуда конвертировать
Ибо существуют Bitwise Operators
22 авг 11, 13:42    [11156697]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Проверка всегда делалась стандартным bitwise and ( & ).
22 авг 11, 13:43    [11156707]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
Принцип понятен:
select 12799 & expression
Не совсем понятно как это использовать, с чем сравнивать
22 авг 11, 14:06    [11156915]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
U_rtqwec
Принцип понятен:
select 12799 & expression
Не совсем понятно как это использовать, с чем сравнивать
Сравнивать с битовой маской, в которой все нули, кроме того бита, который вы проверяете. Если в результате получился 0, то бит не выставлен, а если битовая маска, то выставлен.
22 авг 11, 14:08    [11156947]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
Glory
Member

Откуда:
Сообщений: 104751
U_rtqwec
с чем сравнивать

С этим наверное - "Затем она переводит это число в десятичную СС и вставляет в таблицу"
22 авг 11, 14:08    [11156949]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
Методом тыка нашел закономерности, спасибо всем за советы.
Делаю так и в результате сразу видно

select 12585 & 2

select 12587 & 2
22 авг 11, 14:11    [11156983]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
U_rtqwec
Методом тыка нашел закономерности, спасибо всем за советы.
Делаю так и в результате сразу видно

select 12585 & 2

select 12587 & 2


 DECLARE @x smallint
 
 set @x = 5
 
;with t
AS
(
  select 1 n ,'Галка 1' t union
  select 2,'Галка 2' union
  select 4,'Галка 3' union
  select 8,'Галка 4'   
)

SELECT T.t FROM T
where T.n & @x = T.n 
22 авг 11, 14:13    [11156997]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
case  when aa.Flag & 2 <> 0 then 'Однородный'
                         else 'Неоднородный'
22 авг 11, 14:18    [11157063]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
U_rtqwec
Принцип понятен:
select 12799 & expression
Не совсем понятно как это использовать, с чем сравнивать

Я по этому и спросил зачем вам. Если выводит на экран одно, если сравнивать - другое, тут вам уже подсказали.
Использовать просто, нужный вам бит в 2-м представлении это некая степень двойки в десятичном, по этому просто при помощи оператора & сравниваете число со степенью двойки.
declare @a int
set @a = 9
select
	[fourth bit] = convert(bit,@a&8),
	[third bit] = convert(bit,@a&4),
	[second bit] = convert(bit,@a&2),
	[first bit] = convert(bit,@a&1)
22 авг 11, 14:21    [11157087]     Ответить | Цитировать Сообщить модератору
 Re: Перевод числа в двоичную сс  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
SomewhereSomehow
U_rtqwec
Принцип понятен:
select 12799 & expression
Не совсем понятно как это использовать, с чем сравнивать

Я по этому и спросил зачем вам. Если выводит на экран одно, если сравнивать - другое, тут вам уже подсказали.
Использовать просто, нужный вам бит в 2-м представлении это некая степень двойки в десятичном, по этому просто при помощи оператора & сравниваете число со степенью двойки.
declare @a int
set @a = 9
select
	[fourth bit] = convert(bit,@a&8),
	[third bit] = convert(bit,@a&4),
	[second bit] = convert(bit,@a&2),
	[first bit] = convert(bit,@a&1)


Спасибо, очень показательно, помогло понять
22 авг 11, 14:32    [11157202]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить