c - 转置函数,十进制转二进制

标签 c binary

我正在尝试开发一个转置函数,它可以将最多 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/

相关文章:

c - 快速双向位移?

python - 为什么 ~0b1 在 Python 2.7 中打印出 -2?

python - 如何将文件中的二进制数据解包/转换为可读值?

C 程序 : Enter Number, 输出编号不同

java - 传递给 C 的 JNI 回调

c - 从 C 中的函数返回一个 const 字符串

java - 在 Java 中从十进制转换为二进制

c - Powerpc 的组装遇到 Program received signal SIGSEGV Segmentation fault

php - 使用二进制将选择存储为整数

C-游程编码不适用于大文件,适用于较小的文件