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);
}
以下仅对unsigned数x
有效(感谢@Groo指正)
x>>1
表示将x
的二进制表示右移一位,相当于除以2,只保留商,舍去余数。
你程序中的行可以替换为
x /= 2;
万一有人需要,
x <<= 1;
相当于(不考虑溢出)
x *= 2;
如何替换 >>
运算符?例如在这种情况下(位表示):
#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);
}
以下仅对unsigned数x
有效(感谢@Groo指正)
x>>1
表示将x
的二进制表示右移一位,相当于除以2,只保留商,舍去余数。
你程序中的行可以替换为
x /= 2;
万一有人需要,
x <<= 1;
相当于(不考虑溢出)
x *= 2;