来源:蜘蛛抓取(WebSpider)
时间:2015-03-24 17:08
标签:
物流方数怎么算
如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方?
字体:[ ] 类型:转载 时间:
本篇文章是对如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方的实现方法,进行了详细的分析介绍,需要的朋友参考下
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。最快速的方法:(number & number - 1) == 0原因:因为2的N次方换算是二进制为10……0这样的形式(0除外)。与上自己-1的位数,这们得到结果为0。例如。8的二进制为=7,7的二进制为111。两者相与的结果为0。计算如下:1000& 0111-------0000使用递归来实现的代码如下: 代码如下:#include "stdio.h"#include "stdlib.h"int log2(int value)&& //递归判断一个数是2的多少次方{&if (value == 1)&&return 0;&else&&return 1+log2(value&&1);}int main(void){&&printf("请输入一个整数:");&scanf("%d",&num);&if(num&(num-1))& //使用与运算判断一个数是否是2的幂次方&&printf("%d不是2的幂次方!\n",num);&else&&printf("%d是2的%d次方!\n",num,log2(num));&system("pause");&return 0;}使用非递归来实现的代码如下: 代码如下:#include "stdio.h"#include "stdlib.h"int log2(int value)&& //非递归判断一个数是2的多少次方{&int x=0;&while(value&1)&{&&value&&=1;&&x++;&}&}int main(void){&&printf("请输入一个整数:");&scanf("%d",&num);&if(num&(num-1))&&&& //使用与运算判断一个数是否是2的幂次方&&printf("%d不是2的幂次方!\n",num);&else&&printf("%d是2的%d次方!\n",num,log2(num));&system("pause");&return 0;}扩展:求一个数n的二进制中1的个数。非常巧妙地利用了一个性质,n=n&(n-1) 能移除掉n的二进制中最右边的1的性质,循环移除,直到将1全部移除,这种方法将问题的复杂度降低到只和1的个数有关系。代码如下: 代码如下:int Func3(int data){&& //利用了data&(data-1)每次都能移除最右边的1,移除了多少个1,就是包含了几个1&int count = 0;&while (data)&{&&data = data & (data-1);&&count++;&}&}扩展问题二:A和B的二进制中有多少位不相同。这个问题可以分为两步,(1)将A和B异或得到C,即C=A^B,(2)计算C的二进制中有多少个1。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具体积公式要求方数怎么算
体积公式要求方数怎么算
09-11-09 &匿名提问
圆柱体的体积公式:体积=底面积×高 ,如果用h代表圆柱体的高,则圆柱=S底×h 长方体的体积公式:体积=长×宽×高 如果用a、b、c分别表示长方体的长、宽、高则 长方体体积公式为:V长=abc 正方体的体积公式:体积=棱长×棱长×棱长. 如果用a表示正方体的棱长,则 正方体的体积公式为V正=a·a·a=a³ 锥体的体积=底面面积×高÷3 V 圆锥=S底×h÷3 台体体积公式:V=[ S上+√(S上S下)+S下]h÷3 圆台体积公式:V=(R²+Rr+r²)hπ÷3 球缺体积公式=πh²(3R-h)÷3 球体积公式:V=4πR³/3 棱柱体积公式:V=S底面×h=S直截面×l (l为侧棱长,h为高) 棱台体积:V=〔S1+S2+开根号(S1*S2)〕/3*h 注:V:体积;S1:上表面积;S2:下表面积;h:高。 ------ 几何体的表面积计算公式 圆柱体: 表面积:2πRr+2πRh 体积:πRRh (R为圆柱体上下底圆半径,h为圆柱体高) 圆锥体: 表面积:πRR+πR[(hh+RR)的平方根] 体积: πRRh/3 (r为圆锥体低圆半径,h为其高, 平面图形 名称 符号 周长C和面积S 正方形 a—边长 C=4a S=a2 长方形 a和b-边长 C=2(a+b) S=ab 三角形 a,b,c-三边长h-a边上的高s-周长的一半A,B,C-内角其中 s=(a+b+c)/2 S=ah/2=ab/2·sinC =[s(s-a)(s-b)(s-c)]1/2=a2sinBsinC/(2sinA) 四边形 d,D-对角线长α-对角线夹角 S=dD/2·sinα 平行四边形 a,b-边长h-a边的高α-两边夹角 S=ah=absinα 菱形 a-边长α-夹角D-长对角线长d-短对角线长 S=Dd/2=a2sinα 梯形 a和b-上、下底长h-高m-中位线长 S=(a+b)h/2=mh 圆 r-半径 d-直径 C=πd=2πr S=πr2=πd2/4 扇形 r—扇形半径 a—圆心角度数 C=2r+2πr×(a/360) S=πr2×(a/360) 弓形 l-弧长 S=r2/2·(πα/180-sinα) b-弦长 =r2arccos[(r-h)/r] - (r-h)(2rh-h2)1/2 h-矢高 =παr2/360 - b/2·[r2-(b/2)2]1/2 r-半径 =r(l-b)/2 + bh/2 α-圆心角的度数 ≈2bh/3 圆环 R-外圆半径 S=π(R2-r2) r-内圆半径 =π(D2-d2)/4 D-外圆直径
请登录后再发表评论!
圆柱体的体积公式:体积=底面积×高 ,如果用h代表圆柱体的高,则圆柱=S底×h 长方体的体积公式:体积=长×宽×高 如果用a、b、c分别表示长方体的长、宽、高则 长方体体积公式为:V长=abc 正方体的体积公式:体积=棱长×棱长×棱长. 如果用a表示正方体的棱长,则 正方体的体积公式为V正=a·a·a=a³ 锥体的体积=底面面积×高÷3 V 圆锥=S底×h÷3 台体体积公式:V=[ S上+√(S上S下)+S下]h÷3 圆台体积公式:V=(R²+Rr+r²)hπ÷3 球缺体积公式=πh²(3R-h)÷3 球体积公式:V=4πR³/3 棱柱体积公式:V=S底面×h=S直截面×l (l为侧棱长,h为高) 棱台体积:V=〔S1+S2+开根号(S1*S2)〕/3*h 注:V:体积;S1:上表面积;S2:下表面积;h:高。 ------ 几何体的表面积计算公式 圆柱体: 表面积:2πRr+2πRh 体积:πRRh (R为圆柱体上下底圆半径,h为圆柱体高) 圆锥体: 表面积:πRR+πR[(hh+RR)的平方根] 体积: πRRh/3 (r为圆锥体低圆半径,h为其高, 平面图形 名称 符号 周长C和面积S 正方形 a—边长 C=4a S=a2 长方形 a和b-边长 C=2(a+b) S=ab 三角形 a,b,c-三边长h-a边上的高s-周长的一半A,B,C-内角其中 s=(a+b+c)/2 S=ah/2=ab/2·sinC =[s(s-a)(s-b)(s-c)]1/2=a2sinBsinC/(2sinA) 四边形 d,D-对角线长α-对角线夹角 S=dD/2·sinα 平行四边形 a,b-边长h-a边的高α-两边夹角 S=ah=absinα 菱形 a-边长α-夹角D-长对角线长d-短对角线长 S=Dd/2=a2sinα 梯形 a和b-上、下底长h-高m-中位线长 S=(a+b)h/2=mh 圆 r-半径 d-直径 C=πd=2πr S=πr2=πd2/4 扇形 r—扇形半径 a—圆心角度数 C=2r+2πr×(a/360) S=πr2×(a/360) 弓形 l-弧长 S=r2/2·(πα/180-sinα) b-弦长 =r2arccos[(r-h)/r] - (r-h)(2rh-h2)1/2 h-矢高 =παr2/360 - b/2·[r2-(b/2)2]1/2 r-半径 =r(l-b)/2 + bh/2 α-圆心角的度数 ≈2bh/3 圆环 R-外圆半径 S=π(R2-r2) r-内圆半径 =π(D2-d2)/4 D-外圆直径
请登录后再发表评论!
圆柱体的体积公式:体积=底面积×高 ,如果用h代表圆柱体的高,则圆柱=S底×h 长方体的体积公式:体积=长×宽×高 如果用a、b、c分别表示长方体的长、宽、高则 长方体体积公式为:V长=abc 正方体的体积公式:体积=棱长×棱长×棱长. 如果用a表示正方体的棱长,则 正方体的体积公式为V正=a·a·a=a³ 锥体的体积=底面面积×高÷3 V 圆锥=S底×h÷3 台体体积公式:V=[ S上+√(S上S下)+S下]h÷3 圆台体积公式:V=(R²+Rr+r²)hπ÷3 球缺体积公式=πh²(3R-h)÷3 球体积公式:V=4πR³/3 棱柱体积公式:V=S底面×h=S直截面×l (l为侧棱长,h为高) 棱台体积:V=〔S1+S2+开根号(S1*S2)〕/3*h 注:V:体积;S1:上表面积;S2:下表面积;h:高。 ------ 几何体的表面积计算公式 圆柱体: 表面积:2πRr+2πRh 体积:πRRh (R为圆柱体上下底圆半径,h为圆柱体高) 圆锥体: 表面积:πRR+πR[(hh+RR)的平方根] 体积: πRRh/3 (r为圆锥体低圆半径,h为其高, 平面图形 名称 符号 周长C和面积S 正方形 a—边长 C=4a S=a2 长方形 a和b-边长 C=2(a+b) S=ab 三角形 a,b,c-三边长h-a边上的高s-周长的一半A,B,C-内角其中 s=(a+b+c)/2 S=ah/2=ab/2·sinC =[s(s-a)(s-b)(s-c)]1/2=a2sinBsinC/(2sinA) 四边形 d,D-对角线长α-对角线夹角 S=dD/2·sinα 平行四边形 a,b-边长h-a边的高α-两边夹角 S=ah=absinα 菱形 a-边长α-夹角D-长对角线长d-短对角线长 S=Dd/2=a2sinα 梯形 a和b-上、下底长h-高m-中位线长 S=(a+b)h/2=mh 圆 r-半径 d-直径 C=πd=2πr S=πr2=πd2/4 扇形 r—扇形半径 a—圆心角度数 C=2r+2πr×(a/360) S=πr2×(a/360) 弓形 l-弧长 S=r2/2·(πα/180-sinα) b-弦长 =r2arccos[(r-h)/r] - (r-h)(2rh-h2)1/2 h-矢高 =παr2/360 - b/2·[r2-(b/2)2]1/2 r-半径 =r(l-b)/2 + bh/2 α-圆心角的度数 ≈2bh/3 圆环 R-外圆半径 S=π(R2-r2) r-内圆半径 =π(D2-d2)/4 D-外圆直径
请登录后再发表评论!