将任意一个数解析为2的幂的和的方法

将任意一个数解析为2的幂的和的方法——递归    规律:              
如给定 14                
∵ 2^3 < 14 < 2^4       
∴ 14中必有8——2^3  14 - 8 = 6        
∵ 2^2 < 6 < 2^3     
∴ 6中必有4——2^2   6 - 4 = 2
∵ 2 = 2        
∴ 14 = 2^3 + 2^2 + 2^1

Parameters : @TotalNum Type: INT @SpecifiedNum Type: INT Steps : Author : Waxdoll Cheung Date : 2005-03-21*/

CREATE FUNCTION dbo.Fun_WheIncluded ( @TotalNum INT, @SpecifiedNum INT )RETURNS BIT AS BEGIN

DECLARE @varRet BIT

DECLARE @varLoop INT

SET @varLoop = 0

WHILE (@TotalNum >= CAST(POWER(2, @VarLoop) AS INT)) SET @varLoop = @varLoop + 1

SET @TotalNum = @TotalNum - CAST(POWER(2, @varLoop - 1) AS INT)

IF (@varLoop = @SpecifiedNum + 1) SET @varRet = 1 ELSE BEGIN IF (@TotalNum >= 1) RETURN dbo.Fun_WheIncluded(@TotalNum, @SpecifiedNum) ELSE SET @varRet = 0 END

RETURN @varRetEND

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值