C ++ - 如何获得十进制数的二进制表示

时间:2013-11-25 18:53:18

标签: c++ binary decimal

我正在尝试获取十进制数的二进制表示。我已经浏览了整个互联网,但找不到任何有用的东西。

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

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

谢谢!

3 个答案:

答案 0 :(得分: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);
}

如果您希望将结果放在字符串中而不是打印到控制台,我相信您可以调整代码。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

string bits(long n)
{
   string tmp ;

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