用一个语句判断一个整数是不是二的整数次幂 20tang056]

发布时间:2016-12-11 16:12:29 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"用一个语句判断一个整数是不是二的整数次幂 20tang056]",主要涉及到用一个语句判断一个整数是不是二的整数次幂 20tang056]方面的内容,对于用一个语句判断一个整数是不是二的整数次幂 20tang056]感兴趣的同学可以参考一下。

#define Is2Integer(n) ((n&(n-1))?0:1) //用一个语句判断一个整数是不是二的整数次幂

select    case when 数值 /2 =(数值+1)/2 then 'true' else 'false' end from   表

啥叫整数次幂?1,2,4,8,16? 直接看%2就是了

select case when CONVERT(INT,log(16)/log(2))=log(16)/log(2) then '整除' ELSE '不整除' END         ------  整除 (所影响的行数为 1 行)

1> declare @x int; 2> set @x=10; 3> select case when replace(substring(master.dbo.fn_varbintohexstr(CONVERT(VARBI NARY(16),@x)),3,10),'0','') in ('','1','2','4','8') then 'OK' else 'FALSE' end 4> 5> go ----- FALSE (1 rows affected) 1> declare @x int; 2> set @x=64; 3> select case when replace(substring(master.dbo.fn_varbintohexstr(CONVERT(VARBI NARY(16),@x)),3,10),'0','') in ('','1','2','4','8') then 'OK' else 'FALSE' end 4> go ----- OK (1 rows affected) 1>

这种问题也有?数学?

declare @i int set @i = 128 select case when(select count(1) from master..spt_values where number =log(@i)/log(2)) !=0  then '整除'  else '非整除'    end 最多到2的2048次方验证。再大,就得另外想折了..

引用 2 楼 guguda2008 的回复:啥叫整数次幂?1,2,4,8,16? 直接看%2就是了 不行的,比如说6,6%2=0,但是6不是2的整数次幂啊。

引用 7 楼 tang056 的回复:引用 2 楼 guguda2008 的回复: 啥叫整数次幂?1,2,4,8,16? 直接看%2就是了 不行的,比如说6,6%2=0,但是6不是2的整数次幂啊。 参考3楼

#define Is2Integer(n) ((n&(n-1))?0:1)  //用一个语句判断一个整数是不是二的整数次幂 是一个好方法,只不过有一定的范围!!

log(2,int) is int? true : false 具体语法忘了 查manual

3楼正解

关注…… 关注……

log(@input)/log(2)

上一篇:熟悉sqlserver2008的reporting services的帮帮忙 200icedut]
下一篇:寻找mdf文件内部字节定义 100a307871404]

相关文章

相关评论