日期:2014-05-18 浏览次数:20474 次
用函数 ------------------------ 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