我正在尝试开发一个转置函数,它可以将最多 9 位数的数字从十进制转置为二进制。我对编码很陌生,这是我的第一次尝试。但它似乎没有用,抱歉,如果我问的是显而易见的问题,但我需要一些帮助。提前致谢。
void transpose(int n)
{
int c, k;
for (c = 31; c >= 0; c--)
{
k = (n % c);
if (k == 0) printf("1");
else printf("0");
}
}
最佳答案
不使用算术运算,您可以使用位运算并直接获取数字:
for (c = 31; c >= 0; --c)
{
printf("%d", (n >> c) & 1);
}
这会将 n
中的值向右移动 c
步,即将位数 c
放在最右边(最低有效位)的位中。然后带有 1
的掩码将生成 1 或 0,然后打印出来。
关于c - 转置函数,十进制转二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21604686/