Sie sind auf Seite 1von 4

import java.lang.

*;
import java.util.*;
class COA
{
public static void main(String args[])
{
System.out.println("Number conversion to Standard IEEE 754 Format\n");
COA c=new COA();
System.out.println("Enter the no. to proceed:\n");
double num;
Scanner sc=new Scanner(System.in);
num=sc.nextDouble();
int n=(int)num;
System.out.println("\nNumber:"+n+"\nFloat:"+(num-n)+"\n");
String s=c.dec_bin(n,num-n);
System.out.println("\n"+s+"\n");
c.IEEE(s,num);
}
public void IEEE(String s,double num)
{
int count=0,index_pt=-1,index_o=-1,flag=0;
//exponenet loop
for(int i=0;i<s.length();i++)
{
if(flag==0)
{
switch(s.charAt(i))
{
case'.':
{
flag=1;
index_pt=i;
while(s.charAt(i)!='1')
{
count-=1;
index_o=i+1;
i++;
}
break;
}
case'1':
{
flag=1;
index_o=i;
i++;
do
{
count+=1;
index_pt=i;
i++;
}while(s.charAt(i)!='.');
break;
}
default:
{
break;
}
}
}
}
//System.out.println("\nPoint:"+(index_pt+1)+"\nFirst One:"+(index_o+1)+"\nCount:"+count);
String ans="";
flag=0;
for(int i=0;i<s.length();i++)
{
if(flag==0)
{
if(i==index_o)
{
flag=1;
ans=ans+s.charAt(i)+".";
}
}
else if(flag==1)
{
if(s.charAt(i)=='.')
continue;
ans=ans+s.charAt(i);

}
}
System.out.println("Answer: "+ans+" * 2^"+count);
ans=ans.substring(2);
int sign;
if(num<0)
{
sign=1;
}
else
{
sign=0;
}
String exp=dec_bin(count+127,0);
int index=exp.indexOf('.');
exp=exp.substring(0,index);
System.out.println("\nSign\tExponent\tFloating_pt\n");
System.out.println("\n"+sign+"\t"+exp+"\t"+ans);

}
public String dec_bin(int n,double num)
{
String s1="",s2="";
int rem;
if(n<0)
{
n=-n;
num=-num;
}
if(n==0)
{
s1=s1+n;
}
else
{
while(n!=0)
{
rem=n%2;
s1=s1+rem;
n=n/2;
}
}
StringBuffer temp=new StringBuffer(s1);
temp.reverse();
s1=temp.toString();
int net,count=0;
while(count!=10)
{
num=num*2;
if(num>=1)
{
s2=s2+"1";
num=num-1;
}
else
{
s2=s2+"0";
}
//System.out.print(num+"\n");
count++;
}
String s;
s=s1+"."+s2;
return s;
}}
OUTPUT:
Number conversion to Standard IEEE 754 Format

Enter the no. to proceed:

-35.1875

Number:-35
Float:-0.1875

100011.0011000000

Answer: 1.000110011000000 * 2^5

Sign Exponent Floating_pt

1 10000100 000110011000000

Das könnte Ihnen auch gefallen