! ½ÊÁø¹ýÀÇ ¼ö¸¦ 2Áø¹ýÀÇ ¼ö·Î ¹Ù²Þ ! Programmed by SHIN, Byeong-Chun Program DecBin Implicit None Real(kind=16) :: dec, bin, rdec, fdec, fbin 10 Print *, '½ÊÁø¹ýÀÇ ¼ö¸¦ ³ÖÀ¸¼¼¿ä' Read *, rdec If (rdec==0.0) Stop dec = Aint(rdec) ; fdec = rdec-Dble(dec) If (dec>0.0) Call idecbin(dec,bin) If (fdec>=0.1**15) Call fdecbin(fdec,fbin) Print *, '--------------------------------------------------------' write(*,"(' ½ÊÁø¹ýÀÇ Á¤¼ö´Â = ',f33.0)") dec write(*,"(' ÀÌÁø¹ýÀÇ Á¤¼ö´Â = ',f33.0)") bin write(*,"(' ½ÊÁø¹ýÀÇ ¼Ò¼ö´Â = ',f33.32)") fdec write(*,"(' ÀÌÁø¹ýÀÇ ¼Ò¼ö´Â = ',f33.32)") fbin Print *, '--------------------------------------------------------' dec=0.0 ; bin=0.0 ; fdec=0.0 ; fbin=0.0 Go to 10 End Program DecBin ! --- Subroutine to find BNS of Integral Part ---- Subroutine Idecbin(d,b) Implicit None Intrinsic Modulo Real(kind=16) :: b,d Integer(kind=8) :: i, r, q b = 0 ; q = int(d) ; i=0 Print *, '[1] Finding binary digit number of Integral part.' Print *, 'itr. modulo quotient binary number' Do While (q>0) r = Mod(q,2_8) if (r==1) b=b+10.0_16**i q = (q-r)/2 i=i+1 write(*,'(i3,2x,i4,2x,i20,2x,f33.0)') i,r,q,b End Do End Subroutine Idecbin ! --- Subroutine to find BNS of Fractional Part ---- Subroutine Fdecbin(d,b) Implicit None Intrinsic Modulo Real(kind=16) :: b,d,r,q,f Integer :: i f=d ; b=0.0 Print *, '[2] Finding binary digit number of Fractional part.' Print *, 'itr. R Digit F' Do i=1,32 r=2*f ; If (r>=1.0_16-0.1_16**9) Then q=1.0 Else ; q=0.0 End If f=r-q write(*,'(i3,2x,f12.10,2x,f2.0,2x,f13.11)') i,r,q,f if (q==1) b=b+0.1_16**i if (f<=0.1**15) Exit End Do End Subroutine Fdecbin