将固定点十进制数转换为二进制数

时间:2014-10-02 22:37:43

标签: c++

我有将代码转换为二进制的代码,但无法弄清楚如何使其适用于固定点十进制数。例如,我如何转换5.25

等数字

以下是我现在的代码:

#include <iostream>
#include <vector>
using namespace std;
int main()
{   
   vector<int>  intVector;  
   int number, digit ;
   int base ;

   cout << "Enter a base: ";
   cin >> base;

   cout << "Enter a number: ";
   cin >> number; 

   while(number > 0)
   {
      digit = number % base ;
      intVector.push_back(digit) ;
      number = number / base ;
   }
   while(!intVector.empty())                
   {
      cout<<intVector.back() ;             
      intVector.pop_back();                     
   }

   return 0;
}

任何指针如何转换固定的十进制数?我需要它打印最多20个小数位。

1 个答案:

答案 0 :(得分:0)

您可以reinterpret_cast将您的浮点数地址设置为char*,然后逐个手动检查这些位,例如:

double number = 16.4566565776765;

char* fp = reinterpret_cast<char*>(&number);

for (std::size_t i = 0; i < sizeof(float); i++){
    for (std::size_t j = 0; j < CHAR_BIT; j++){
        intVector.push_back(fp[i] & (1<<j) ? 1 : 0);
    }
}

注意:

  • 您需要注意平台的字节顺序,以便对位进行排序。