ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 求一個數由2的次冪數的和

求一個數由2的次冪數的和

原创 Linux操作系统 作者:keeking 时间:2009-08-07 13:51:39 0 删除 编辑

/**求一個數由的次冪數的和*/

 

declare @mask int

declare @n int

set @n = 9   -- 这里就是输 入的

 

--set @mask = 0x40000000   --可轉換成位的二進制     

--set @mask =67108864    --這里是根據進制位移的辦法.@mask只要是比@n大的的次方數就行

set @mask =16

while @mask >0

begin

        if( @mask & @n  <> 0) --這里用到了兩個二進制相與

                print @mask

        set @mask = @mask/2

end

-----------------------------------------------------------------------------------

下面是效率更好也更容易理解的函數

 

alter function fn_Num(@Num int)

returns @T Table(Num int)

as

begin

        declare @Num2 int

        set @Num2=1

        while @Num2<=@Num

        begin

                if @Num2&@Num<>0

                insert @T select @Num2

                set @Num2=@Num2*2

        end

return

end

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7899089/viewspace-611572/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 觸發器學習筆記
请登录后发表评论 登录
全部评论

注册时间:2009-07-23

  • 博文量
    194
  • 访问量
    241437