整数左移一位相当于将该数乘以2。编写一个函数
unsigned power2( unsigned number, unsigned pow );
使用移位运算计算number*2pow,并以整数形式输出计算结果。注意考虑数据的溢出。
unsigned power2( unsigned number, unsigned pow ) { unsigned c=1; unsigned bitmask = 1<<31; while(c<31) //溢出判断 { if( number&bitmask ) break; //查找最高位的1 c++; bitmask>>=1; } if(pow<c) return number<<pow; else { cout<<"overflow!\n"; return 0; } }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题