滨_Notepad

学习工作点滴积累
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2007-12-01 21:05  新人~  阅读(408)  评论(0编辑  收藏  举报

将任意一个数解析为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