c - 从十进制字符串到二进制镜像十进制的最短方法?

标签 c file-io binary

我有一个包含小数列表的文本文件。我需要将小数列表打印到另一个文件,这些小数是原始数字二进制镜像的基数 10。目前我是这样做的(每个步骤都是一个函数):

十进制字符串 -> 数字数组 -> 二进制字符串 -> 二进制镜像的基数 10

是否有我本可以采取的更短的步骤但我没有看到或者这有意义吗?

最佳答案

假设您有一个 32 位整数,您可以通过以下方式还原这些位:

#include <stdio.h>

void printBinary(int x)
{
    int m = 0x80000000;
    while(m)
    {
        printf("%d", (m & x) ? 1 : 0);
        m = m >> 1;
        m = m & 0x7fffffff;
    }
    printf("\n");
}

int binaryReverse(int x)
{
    int i = 0;
    int t = 0;
    int m = 0x80000000;
    while(m)
    {
        if (m & x)
        {
            t = t | (1 << i);
        }
        ++i;
        m = m >> 1;
        m = m & 0x7fffffff;
    }
    return t;
}
int main(void) {
    int x = 19088743;
    printf("%u\n",x);
    printBinary(x);
    int y = binaryReverse(x);
    printf("%u\n",y);
    printBinary(y);

    return 0;
}

输出:

19088743
00000001001000110100010101100111
3869426816
11100110101000101100010010000000

关于c - 从十进制字符串到二进制镜像十进制的最短方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35118294/

相关文章:

c++ - 删除文件夹和所有文件/子目录

java - 如何让我的二进制到十进制转换程序也读取 0?

c - 这是一个可接受的 malloc 示例吗?

c - Switch - 如何检查空格?

c xml lib如何搜索我的节点

c - 解析 int 变量

Perl:读取网络文本文件和 "open"它

javascript - 我可以使用 Node.js 将文件存储在 "memory"中吗?

Python:在整数的二进制表示中查找最长的二进制间隙

javascript - 在 JavaScript 中强制二进制字符串的位长度?