Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 소수를 이진수로 변환

<시간/>

이 자습서에서는 소수를 이진수로 변환하는 프로그램에 대해 설명합니다.

이를 위해 소수와 정수 'k'가 제공됩니다. 우리의 임무는 주어진 소수를 소수 정밀도의 주어진 'k'자리까지 해당하는 이진으로 변환하는 것입니다.

예시

#include<bits/stdc++.h>
using namespace std;
//converting decimal to binary number
string convert_tobinary(double num, int k_prec) {
   string binary = "";
   //getting the integer part
   int Integral = num;
   //getting the fractional part
   double fractional = num - Integral;
   //converting integer to binary
   while (Integral) {
      int rem = Integral % 2;
      binary.push_back(rem +'0');
      Integral /= 2;
   }
   //reversing the string to get the
   //required binary number
   reverse(binary.begin(),binary.end());
   binary.push_back('.');
   //converting fraction to binary
   while (k_prec--) {
      fractional *= 2;
      int fract_bit = fractional;
      if (fract_bit == 1) {
         fractional -= fract_bit;
         binary.push_back(1 + '0');
      } else
      binary.push_back(0 + '0');
   }
   return binary;
}
int main() {
   double n = 4.47;
   int k = 3;
   cout << convert_tobinary(n, k) << "\n";
   n = 6.986 , k = 5;
   cout << convert_tobinary(n, k);
   return 0;
}

출력

100.011
110.11111