C++ 将定点十进制数转换为二进制数

C++ 将定点十进制数转换为二进制数,c++,C++,我有将一个数字转换成二进制的代码,但我不知道如何使它适用于定点十进制数字。例如,我如何转换一个数字,例如5.25 以下是我现在掌握的代码: #include <iostream> #include <vector> using namespace std; int main() { vector<int> intVector; int number, digit ; int base ; cout << "En

我有将一个数字转换成二进制的代码,但我不知道如何使它适用于定点十进制数字。例如,我如何转换一个数字,例如
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;
}
#包括
#包括
使用名称空间std;
int main()
{   
矢量积分矢量;
整数,数字;
int-base;
cout>base;
数量;
而(数量>0)
{
数字=数字%基数;
intVector.推回(数字);
数字=数字/基数;
}
而(!intVector.empty())
{

cout您可以
将浮点数地址重新解释为
字符*
,然后手动逐个检查位,类似于:

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);
    }
}
double number=16.45665657765;
char*fp=重新解释类型(&N);
对于(std::size\u t i=0;iintVector.push_back(fp[i]&(1umm atof)或其任何伙伴变量'base'是用户输入的,所以它不一定是2,对吧?您说“转换为二进制”,但看起来这个程序可以将整数转换为以5为基数或以12为基数或以17为基数,这取决于用户对“输入基数”的响应方式.Endianness?指数呢?尾数的第一位呢?@David K:这些是原始位,不知道如何实现
float
:我只是迭代了float的内存表示的每一位。因此,即使在考虑Endianness之后,结果(从技术上)也取决于实现“技术上,”因为我不知道目前谁没有实现IEEE-754。)