c中的移位运算符替换

Bit shift operator replacement in c

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

#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); 
} 

以下仅对unsignedx有效(感谢@Groo指正)

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

你程序中的行可以替换为

x /= 2;

万一有人需要,

x <<= 1;

相当于(不考虑溢出)

x *= 2;