Advertisement
Statev

BinaryRepresentationOfFloat

Jan 12th, 2012
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.83 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace _09.BinaryRepresentationOfFloat
  7. {
  8.     class BinaryRepresentationOfFloat
  9.     {
  10.         private static char SignDefine(ref float number)
  11.         {
  12.             char sign;
  13.             if (number >= 0)
  14.             {
  15.                 sign = '0';
  16.             }
  17.             else
  18.             {
  19.                 sign = '1';
  20.             }
  21.             number = Math.Abs(number);
  22.             return sign;
  23.         }
  24.  
  25.         static string DecimalToByteBinary(int decimalNumber)
  26.         {
  27.             string result = "";
  28.             while (decimalNumber > 0)
  29.             {
  30.                 result = (decimalNumber % 2).ToString() + result;
  31.                 decimalNumber /= 2;
  32.             }
  33.             string addZeros = new string('0', 8 - result.Length);
  34.             result = addZeros + result;
  35.             return result;
  36.         }
  37.  
  38.         private static string ExponentDefine(ref float number)
  39.         {
  40.             string exponent;
  41.             int decExponent = 0;
  42.             while ((number < 1 || number > 2) && number != 0)
  43.             {
  44.                 if (number < 1)
  45.                 {
  46.                     number *= 2;
  47.                     decExponent--;
  48.                 }
  49.                 else
  50.                 {
  51.                     number /= 2;
  52.                     decExponent++;
  53.                 }
  54.             }
  55.             number--;
  56.             exponent = DecimalToByteBinary(127 + decExponent);
  57.             return exponent;
  58.         }
  59.  
  60.         private static string MantissaDefine(float number)
  61.         {
  62.             float bitValue = 0.5f;
  63.             string mantissa = "";
  64.             for (int i = 0; i < 23; i++)
  65.             {
  66.                 if (number - bitValue >= 0)
  67.                 {
  68.                     mantissa += '1';
  69.                     number = number - bitValue;
  70.                 }
  71.                 else
  72.                 {
  73.                     mantissa += '0';
  74.                 }
  75.                 bitValue /= 2;
  76.             }
  77.             return mantissa;
  78.         }
  79.  
  80.         static void FloatInBinary(float number, out char sign, out string exponent, out string mantissa)
  81.         {
  82.             sign = SignDefine(ref number);
  83.             exponent = ExponentDefine(ref number);
  84.             mantissa = MantissaDefine(number);
  85.         }
  86.  
  87.         static void Main(string[] args)
  88.         {
  89.             float number = -27.25f;
  90.             Console.WriteLine("Number: {0}",number);
  91.             char sign;
  92.             string exponent;
  93.             string mantissa;
  94.             FloatInBinary(number, out sign, out exponent, out mantissa);
  95.             Console.WriteLine("Sign: {0}",sign);
  96.             Console.WriteLine("Exponent: {0}",exponent);
  97.             Console.WriteLine("Mantissa: {0}",mantissa);
  98.         }
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement