日期:2014-05-18 浏览次数:20585 次
用函数
------------------------
Create FUNCTION DecToBin(@Dec Int)
RETURNS VARCHAR(16)
AS
begin
declare @BinStr as varchar(20)
declare @Mod2 as int
declare @Div2 as int
set @Div2 = @Dec / 2
set @Mod2 = @Dec % 2
set @BinStr=''
while @Div2<>0
begin
if @Mod2=0
set @BinStr = @BinStr + '0'
else
set @BinStr = @BinStr + '1'
set @Dec = @Dec / 2
set @Div2 = @Dec / 2
set @Mod2 = @Dec % 2
end
set @BinStr = @BinStr + '1'
return REVERSE(@BinStr + right('0000000000000000',16-len(@BinStr)))
end
------解决方案--------------------
用位运算符,^(位异或)、&(位与)、|(位或)、~(位非)。
例如,想知道20(十进制)这个数字转换为二进制后的第三位是1还是0。
select case when 20&8 <> 0 then 1 else 0 end