logo

Previesť desatinný zlomok na binárne číslo

Ak je dané zlomkové desatinné číslo n a celé číslo k, preveďte desatinné číslo n na ekvivalentné binárne číslo s presnosťou na k za desatinnou čiarkou.

Príklady:



Input: n = 2.47, k = 5 Output: 10.01111 Input: n = 6.986 k = 8 Output: 110.11111100>
Dôrazne odporúčame, aby ste klikli sem a precvičili si to predtým, ako prejdete k riešeniu.

A) Preveďte integrálnu časť desatinného čísla na binárny ekvivalent

  1. Vydeľte desatinné číslo 2 a uložte zvyšky do poľa.
  2. Vydeľte podiel 2.
  3. Opakujte krok 2, kým nedostaneme kvocient rovný nule.
  4. Ekvivalentné binárne číslo by bolo opačné ako všetky zvyšky kroku 1.

B) Preveďte zlomkovú časť desatinného čísla na binárny ekvivalent

  1. Vynásobte zlomkové desatinné číslo 2.
  2. Integrálnou súčasťou výsledného desatinného čísla bude prvá číslica zlomkového binárneho čísla.
  3. Opakujte krok 1 s použitím iba zlomkovej časti desatinného čísla a potom krok 2.

C) Skombinujte integrálnu aj zlomkovú časť binárneho čísla.



Ilustračné :

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 na demonštráciu vyššie uvedených krokov:

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>

>

čo je používateľské meno
>

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));>

>

>

Výkon

100.011 110.11111>

Časová zložitosť: O(len(n))
Pomocný priestor: O(len(n))

kde len() je celkový počet číslic v čísle n.
Previesť binárny zlomok na desatinné číslo