请教一个小问题 请教一个小问题:怎么判断一个数是不是2的幂次方?如果不是,怎么求得最近的一个2的幂次方?用于快速傅立叶变换,它要求数组数据个数为2的幂次方,如果不是则需要在后面以0补齐。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 傅式变换,都忘的差不多了...&以前听过种方法LZ参考下,将该数二进制形式移位,遇到1将其置0,若结果为0,则为二的某次幂.. 如果不是,怎么求得最近的一个2的幂次方?---------------------------------最简单的方法,将这个数最高位置1,后面的全部置0 good ideal! 傅式变换,都忘的差不多了...&以前听过种方法LZ参考下,将该数二进制形式移位,遇到1将其置0,若结果为0,则为二的某次幂..二的某次幂应该只有一个1 如果不是,怎么求得最近的一个2的幂次方?---------------------------------最简单的方法,将这个数最高位置1,后面的全部置0 good ideal!怎么知道它有多少位?谢谢 &以前听过种方法LZ参考下,将该数二进制形式移位,遇到1将其置0,若结果为0,则为二的某次幂..最后得到循环的次数不就是位数.. UCHAR ucExample = XXXX;UCHAR i = 0;UCHAR ucMask = 0x80; //10000000for(i = 7; i != 0; i--){ if(0x01 == ((ucExample & ucMask) >> i)) { bitcnt = i + 1; break; } ucMask >> 1;} 以上以8bit数为例,计算是几位数。 呵呵由于本人菜鸟,时间又比较急,没办法,采用了下面的笨方法:各位有什么好方法教教小弟! if(!(iNum&(iNum-1))) { .... } else { dBuf=iNum; iBuf=0; do { dBuf=dBuf/2.0; iBuf++; }while(dBuf>1.0); N=(int)pow(2,iBuf); for(loop=iNum;loop<=N-1;loop++) data[loop]=0.0; } 高分抢答:重载MainFrame的WinProc后程序运行响应慢 如何用c或vc来读取一副jpg格式图像全部数字信息 变态的BUG,到底是我的问题,还是它的问题? 编辑框的简单问题 关于保存文件的问题!! 刚拿到一个项目,可我不知道报价多少合适。谁帮我报个价啊 我太依赖网络了,新公司不许上网,怎么办? 在OnTimer函数中读取rs232接口数据,为什么总是读取失败?请各位帮我,3kx!!! 我有用VC开发ACtiveX 控件的经历,现在想学习有关COM的知识, 求教!为什么有些字可以显示却打印不出来,如何解决? 高分:如何编写dll的回调函数 请教:关于单文档、多视图
---------------------------------
最简单的方法,将这个数最高位置1,后面的全部置0
good ideal!
---------------------------------
最简单的方法,将这个数最高位置1,后面的全部置0
good ideal!
怎么知道它有多少位?谢谢
UCHAR i = 0;
UCHAR ucMask = 0x80; //10000000
for(i = 7; i != 0; i--)
{
if(0x01 == ((ucExample & ucMask) >> i))
{
bitcnt = i + 1;
break;
}
ucMask >> 1;
}
if(!(iNum&(iNum-1)))
{
....
}
else
{
dBuf=iNum;
iBuf=0;
do
{
dBuf=dBuf/2.0;
iBuf++;
}while(dBuf>1.0);
N=(int)pow(2,iBuf);
for(loop=iNum;loop<=N-1;loop++)
data[loop]=0.0;
}