怎么修剪盆景:如何获得二进制数的最高非零位

来源:百度文库 编辑:神马品牌网 时间:2024/05/12 07:58:10
暴力与对数免谈

期待您的回答,谢谢!
?????

用函数
比如你想得到int i = 10000 的最高位
可以这样 char* a = new char [100] ;
itoa(i,a,2); 其中i是要转换的数,a是目标字符数组,2表示转换成二进制
这个函数没有返回值
原形是 void itoa (int , const char* , int) ;
还有一种方法就是位运算法,通过右移操作
不过有点复杂,效率非常高倒是真的
for( ;; )
{
if ( i >> 1 == 0 ) printf("%d",i) ; // 或 cout << i ;
else i >>= 1 ; //或 i = i >> 1 ;
}
不过兄弟,你要二进制非零最高位,那就是1啊

转换成字符串,然后用类似instr的函数查找1在字符串里第一次出现的位置

老兄没有说明什么程序做啊,c还是别的啊,不好解答啊