繁体   English   中英

将定点小数转换为二进制

[英]Convert Fixed Point Decimal Number to Binary

我有将数字转换为二进制的代码,但无法弄清楚如何使它适用于定点十进制数字。 例如,如何转换一个数字,例如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个小数位。

您可以reinterpret_cast您的浮点数地址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);
    }
}

注意:

  • 您需要注意平台的耐用性,以便对位进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM