zoukankan      html  css  js  c++  java
  • SQL位移运算函数

    -- =============================================

    -- Author:      <maco_wang>

    -- Create date: <2011-03-22>

    -- Description: <SQL位移运算函数>

    -- =============================================

    Go

    --创建函数

    create function displacement(@n as bigint,@m as varchar(3))

    returns int

    as

    begin

        declare @maco varchar(50);set @maco=''

        declare @i int

        declare @x int

        declare @s int

        while (@n<>0)

        begin

           set @maco=@maco+convert(char(1),@n%2)

           set @n=@n/2

        end

        set @maco=reverse(@maco)

        set @maco=RIGHT('0000'+@maco,4)

        set @s=LEN(@maco)

        set @i=convert(int,RIGHT(@m,1))

        set @x=1

        if LEFT(@m,2)='<<'

        begin

          while(@x<=@i)

          begin

           select @maco=@maco+'0'

           select @x=@x+1

          end

          select @maco=RIGHT(@maco,@s)

        end

        if LEFT(@m,2)='>>'

        begin

          while(@x<=@i)

          begin

           select @maco='0'+@maco

           select @x=@x+1

          end

          select @maco=LEFT(@maco,@s)

        end

        set @i=LEN(@maco)

        set @s=0

        while(@i>0)

        begin

          if SUBSTRING(@maco,LEN(@maco)-@i+1,1)='1'

          begin

           select @s=@s+POWER(2,convert(float,@i-1))

          end

          select @i=@i-1

        end

        return @s

    end

     

    --测试示例

    select dbo.displacement(1,'<<3') 

    select dbo.displacement(8,'>>1')

    select dbo.displacement(12,'>>3')

     

    --运行结果

    /*

    8

    4

    1

    */

  • 相关阅读:
    codeforce 148D. Bag of mice[概率dp]
    poj2096 Collecting Bugs[期望dp]
    poj3744 Scout YYF I[概率dp+矩阵优化]
    hdu 5318 The Goddess Of The Moon
    hdu5411 CRB and Puzzle[矩阵优化dp]
    poj3734 Blocks[矩阵优化dp or 组合数学]
    1948 NOI 嘉年华
    教主泡嫦娥[有趣的dp状态设计]
    HDU 4455 Substrings[多重dp]
    1296: [SCOI2009]粉刷匠[多重dp]
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244687.html
Copyright © 2011-2022 走看看