Pretvori decimalni ulomek v binarno število

Podano je decimalno število ulomka n in celo število k, pretvorite decimalno število n v ekvivalentno dvojiško število do k natančnosti za decimalno vejico.

Primeri:

Input: n = 2.47, k = 5 Output: 10.01111 Input: n = 6.986 k = 8 Output: 110.11111100 
Močno priporočamo, da kliknete tukaj in vadite, preden nadaljujete z rešitvijo.

A) Pretvorite integralni del decimalnega v dvojiški ekvivalent

  1. Decimalno število delite z 2 in ostanke shranite v matriko.
  2. Delite količnik z 2.
  3. Ponavljamo 2. korak, dokler ne dobimo količnika, ki je enak nič.
  4. Enakovredno binarno število bi bilo obratno od vseh ostankov 1. koraka.

B) Pretvorite ulomek decimalnega v dvojiški ekvivalent

  1. Pomnožite decimalno število z 2.
  2. Sestavni del nastalega decimalnega števila bo prva števka dvojiškega števila ulomka.
  3. Ponovite 1. korak z uporabo le ulomkov decimalnega števila in nato 2. korak.

C) Združite integral in ulomek dvojiškega števila.

Ilustracija :

Let's take an example for n = 4.47 k = 3 Step 1: Conversion of 4 to binary 1. 4/2 : Remainder = 0 : Quotient = 2 2. 2/2 : Remainder = 0 : Quotient = 1 3. 1/2 : Remainder = 1 : Quotient = 0 So equivalent binary of integral part of decimal is 100. Step 2: Conversion of .47 to binary 1. 0.47 * 2 = 0.94, Integral part: 0 2. 0.94 * 2 = 1.88, Integral part: 1 3. 0.88 * 2 = 1.76, Integral part: 1 So equivalent binary of fractional part of decimal is .011 Step 3: Combined the result of step 1 and 2. Final answer can be written as: 100 + .011 = 100.011 

Program za predstavitev zgornjih korakov:

C++




// C++ program to convert fractional decimal> // to binary number> #include> using> namespace> std;> > // Function to convert decimal to binary upto> // k-precision after decimal point> string decimalToBinary(> double> num,> int> k_prec)> {> > string binary => ''> ;> > > // Fetch the integral part of decimal number> > int> Integral = num;> > > // Fetch the fractional part decimal number> > double> fractional = num - Integral;> > > // Conversion of integral part to> > // binary equivalent> > while> (Integral)> > {> > int> rem = Integral % 2;> > > // Append 0 in binary> > binary.push_back(rem +> '0'> );> > > Integral /= 2;> > }> > > // Reverse string to get original binary> > // equivalent> > reverse(binary.begin(),binary.end());> > > // Append point before conversion of> > // fractional part> > binary.push_back(> '.'> );> > > // Conversion of fractional part to> > // binary equivalent> > while> (k_prec--)> > {> > // Find next bit in fraction> > 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;> }> > // Driver code> int> main()> {> > > double> n = 4.47;> > int> k = 3;> > cout < < decimalToBinary(n, k) < <> ' '> ;> > > n = 6.986 , k = 5;> > cout < < decimalToBinary(n, k);> > return> 0;> }>

Java




// Java program to convert fractional decimal> // to binary number> import> java.util.*;> > class> GFG> {> > > // Function to convert decimal to binary upto> > // k-precision after decimal point> > static> String decimalToBinary(> double> num,> int> k_prec)> > {> > String binary => ''> ;> > > // Fetch the integral part of decimal number> > int> Integral = (> int> ) num;> > > // Fetch the fractional part decimal number> > double> fractional = num - Integral;> > > // Conversion of integral part to> > // binary equivalent> > while> (Integral>> 0> )> > {> > int> rem = Integral %> 2> ;> > > // Append 0 in binary> > binary += ((> char> )(rem +> '0'> ));> > > Integral /=> 2> ;> > }> > > // Reverse string to get original binary> > // equivalent> > binary = reverse(binary);> > > // Append point before conversion of> > // fractional part> > binary += (> '.'> );> > > // Conversion of fractional part to> > // binary equivalent> > while> (k_prec-->> 0> )> > {> > // Find next bit in fraction> > fractional *=> 2> ;> > int> fract_bit = (> int> ) fractional;> > > if> (fract_bit ==> 1> )> > {> > fractional -= fract_bit;> > binary += (> char> )(> 1> +> '0'> );> > }> > else> > {> > binary += (> char> )(> 0> +> '0'> );> > }> > }> > > return> binary;> > }> > > static> String reverse(String input)> > {> > char> [] temparray = input.toCharArray();> > int> left, right => 0> ;> > right = temparray.length -> 1> ;> > > for> (left => 0> ; left { // Swap values of left and right char temp = temparray[left]; temparray[left] = temparray[right]; temparray[right] = temp; } return String.valueOf(temparray); } // Driver code public static void main(String[] args) { double n = 4.47; int k = 3; System.out.println(decimalToBinary(n, k)); n = 6.986; k = 5; System.out.println(decimalToBinary(n, k)); } } // This code contributed by Rajput-Ji>

Python3




# Python3 program to convert fractional> # decimal to binary number> > # Function to convert decimal to binary> # upto k-precision after decimal point> def> decimalToBinary(num, k_prec) :> > > binary> => ''> > > # Fetch the integral part of> > # decimal number> > Integral> => int> (num)> > > # Fetch the fractional part> > # decimal number> > fractional> => num> -> Integral> > > # Conversion of integral part to> > # binary equivalent> > while> (Integral) :> > > rem> => Integral> %> 2> > > # Append 0 in binary> > binary> +> => str> (rem);> > > Integral> /> /> => 2> > > # Reverse string to get original> > # binary equivalent> > binary> => binary[ : :> -> 1> ]> > > # Append point before conversion> > # of fractional part> > binary> +> => '.'> > > # Conversion of fractional part> > # to binary equivalent> > while> (k_prec) :> > > # Find next bit in fraction> > fractional> *> => 2> > fract_bit> => int> (fractional)> > > if> (fract_bit> => => 1> ) :> > > fractional> -> => fract_bit> > binary> +> => '1'> > > else> :> > binary> +> => '0'> > > k_prec> -> => 1> > > return> binary> > # Driver code> if> __name__> => => '__main__'> :> > > n> => 4.47> > k> => 3> > print> (decimalToBinary(n, k))> > > n> => 6.986> > k> => 5> > print> (decimalToBinary(n, k))> > # This code is contributed by Ryuga>

C#




// C# program to convert fractional decimal> // to binary number> using> System;> > class> GFG> {> > > // Function to convert decimal to binary upto> > // k-precision after decimal point> > static> String decimalToBinary(> double> num,> int> k_prec)> > {> > String binary => ''> ;> > > // Fetch the integral part of decimal number> > int> Integral = (> int> ) num;> > > // Fetch the fractional part decimal number> > double> fractional = num - Integral;> > > // Conversion of integral part to> > // binary equivalent> > while> (Integral>0)> > {> > int> rem = Integral % 2;> > > // Append 0 in binary> > binary += ((> char> )(rem +> '0'> ));> > > Integral /= 2;> > }> > > // Reverse string to get original binary> > // equivalent> > binary = reverse(binary);> > > // Append point before conversion of> > // fractional part> > binary += (> '.'> );> > > // Conversion of fractional part to> > // binary equivalent> > while> (k_prec-->0)> > {> > // Find next bit in fraction> > fractional *= 2;> > int> fract_bit = (> int> ) fractional;> > > if> (fract_bit == 1)> > {> > fractional -= fract_bit;> > binary += (> char> )(1 +> '0'> );> > }> > else> > {> > binary += (> char> )(0 +> '0'> );> > }> > }> > > return> binary;> > }> > > static> String reverse(String input)> > {> > char> [] temparray = input.ToCharArray();> > int> left, right = 0;> > right = temparray.Length - 1;> > > for> (left = 0; left { // Swap values of left and right char temp = temparray[left]; temparray[left] = temparray[right]; temparray[right] = temp; } return String.Join('',temparray); } // Driver code public static void Main(String[] args) { double n = 4.47; int k = 3; Console.WriteLine(decimalToBinary(n, k)); n = 6.986; k = 5; Console.WriteLine(decimalToBinary(n, k)); } } // This code has been contributed by 29AjayKumar>

PHP




// PHP program to convert fractional decimal // to binary number // Function to convert decimal to binary upto // k-precision after decimal point function decimalToBinary($num, $k_prec) { $binary = ''; // Fetch the integral part of decimal number $Integral = (int)($num); // Fetch the fractional part decimal number $fractional = $num - $Integral; // Conversion of integral part to // binary equivalent while ($Integral) { $rem = $Integral % 2; // Append 0 in binary $binary.=chr($rem + 48 ); $Integral = (int)($Integral/2); } // Reverse string to get original binary // equivalent $binary=strrev($binary); // Append point before conversion of // fractional part $binary.='.'; // Conversion of fractional part to // binary equivalent while ($k_prec--) { // Find next bit in fraction $fractional *= 2; $fract_bit = (int)$fractional; if ($fract_bit == 1) { $fractional -= $fract_bit; $binary.=chr(1 + 48 ); } else $binary.=chr(0 + 48 ); } return $binary; } // Driver code $n = 4.47; $k = 3; echo decimalToBinary($n, $k).' '; $n = 6.986; $k = 5; echo decimalToBinary($n, $k); // This code is contributed by mits ?>>

Javascript




> > > // JavaScript program to convert fractional> > // decimal to binary number> > > // Function to convert decimal to binary upto> > // k-precision after decimal point> > function> decimalToBinary(num, k_prec)> > {> > let binary => ''> ;> > > // Fetch the integral part of decimal number> > let Integral = parseInt(num, 10);> > > // Fetch the fractional part decimal number> > let fractional = num - Integral;> > > // Conversion of integral part to> > // binary equivalent> > while> (Integral>0)> > {> > let rem = Integral % 2;> > > // Append 0 in binary> > binary +=> > (String.fromCharCode(rem +> '0'> .charCodeAt()));> > > Integral = parseInt(Integral / 2, 10);> > }> > > // Reverse string to get original binary> > // equivalent> > binary = reverse(binary);> > > // Append point before conversion of> > // fractional part> > binary += (> '.'> );> > > // Conversion of fractional part to> > // binary equivalent> > while> (k_prec-->0)> > {> > // Find next bit in fraction> > fractional *= 2;> > let fract_bit = parseInt(fractional, 10);> > > if> (fract_bit == 1)> > {> > fractional -= fract_bit;> > binary +=> > String.fromCharCode(1 +> '0'> .charCodeAt());> > }> > else> > {> > binary +=> > String.fromCharCode(0 +> '0'> .charCodeAt());> > }> > }> > > return> binary;> > }> > > function> reverse(input)> > {> > let temparray = input.split(> ''> );> > let left, right = 0;> > right = temparray.length - 1;> > > for> (left = 0; left { // Swap values of left and right let temp = temparray[left]; temparray[left] = temparray[right]; temparray[right] = temp; } return temparray.join(''); } let n = 4.47; let k = 3; document.write(decimalToBinary(n, k) + ''); n = 6.986; k = 5; document.write(decimalToBinary(n, k));>

Izhod

100.011 110.11111 

Časovna zahtevnost: O(len(n))
Pomožni prostor: O(len(n))

kjer je len() skupno število števk v številu n.
Pretvori dvojiški ulomek v decimalni