c

时间:2017-12-12 10:19:35

标签: c bit-shift

如何替换>>运算符?例如,在这种情况下(位表示):

#include <stdio.h> 

int main() { 

    unsigned int x; 
    char str[65];
    char *res; 

    scanf("%i", &x); 
    res = str + 64;
    *res = 0;

    do { 

        res--;
        if ( x & 1 ) 
            *res = '1';
        else
            *res = '0';
        x >>= 1;

    } while(x != 0);

    printf("%s\n", res); 
} 

1 个答案:

答案 0 :(得分:1)

以下内容仅适用于未签名号码x(感谢@Groo进行更正)。

x>>1表示将二进制表示中的x右移一位数,相当于将其除以2,只保留商,丢弃余数。

程序中的行可以替换为

x /= 2;

如果有人需要,

x <<= 1;

相当于(不考虑溢出)

x *= 2;