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