我有一个包含小数列表的文本文件。我需要将小数列表打印到另一个文件,这些小数是原始数字二进制镜像的基数 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/