首页 > 试题广场 >

整数左移一位相当于将该数乘以2。编写一个函数

[问答题]

整数左移一位相当于将该数乘以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;
    }
}

编辑于 2018-05-07 11:52:09 回复(0)