2013-11-25 23 views
-5

我想获得一个十进制数的二进制表示法。我看遍了互联网,但找不到任何有用的东西。如何获得一个十进制数的二进制表示法

任何人都可以提供示例代码吗?

请注意,我希望它可以在32位和64位架构上运行。

谢谢!

+0

您是否尝试过某些东西?如果你有,那是什么问题? –

+2

你应该问自己的问题是:*我怎样才能用手做?*。如果你不明白这个问题,你就不能编写一个程序来解决它。 –

+1

“没有任何用处”等同于我可以复制和粘贴的代码? – usr2564301

回答

3

只是隔离位一个接一个,从最高的开始,并打印相应的字符:如果你想在一个字符串,而不是打印到控制台结果

#include <limits.h> 
#include <stdio.h> 

void print_binary(unsigned x) 
{ 
    for (int i = sizeof(x) * CHAR_BIT; i--;) 
    { 
     putchar('0' + ((x >> i) & 1)); 
    } 
} 

int main() 
{ 
    print_binary(123); 
} 

,我确保你可以调整代码。

+0

感谢队友,这个作品。无论如何不要假设它是在32位计算机上运行的呢? (或64位) – user2891805

+0

当然,只需用便携式替换常量31即可,请参阅我的编辑。 – fredoverflow

+0

感谢您花时间帮助。 – user2891805

0

尝试William Clinger的论文“如何准确读取浮点数”。

+0

http://www.cesura17.net/~will/Professional/Research/Papers/howtoread.pdf –

0

从下往上获取位。 然后在完成时反转字符串。

string bits(long n) 
{ 
    string tmp ; 

    while (n) { tmp << (n & 1) ? "1" : "0" ; n >>= 1 ; } 
    tmp= reverse(tmp) ; 
    return tmp ; 
} 
相关问题