编写函数srl用算术右移来完成逻辑右移;函数 sra 用逻辑右移来完成算术右移。

int sra(int x, int k)
{
    int xsrl = (unsigned) x >> k;
    int w = sizeof(int) << 3;
    return xsrl |= (-1 << (w-k));
} 


unsigned srl(unsigned x, int k)
{
    unsigned xsra = (int) x >> k;
    int w = sizeof(int) << 3;
    return xsra &= ~(-1 << (w - k));
}


你可能感兴趣的:(编写函数srl用算术右移来完成逻辑右移;函数 sra 用逻辑右移来完成算术右移。)