Bilangan Floating Point[1]

download Bilangan Floating Point[1]

of 6

Transcript of Bilangan Floating Point[1]

  • 7/23/2019 Bilangan Floating Point[1]

    1/6

    Bilangan Floating Point

    June 1st, 2012 by didikLeave a reply

    Bilangan yang mempunyai nilai pecahan (misalnya 3.2!" dapat direpresentasikan dengan dua #$rmatbilangan% #i&ed'p$int dan #l$ating'p$int.

    Bilangan pecahanfixed-pointmempunyai angkauan yang dibatasi $leh umlah digit signi#ikan yang digunakan

    untuk merepresentasikan bilangan tersebut. )isalnya bilangan pecahan desimal sepuluh digit. Bilangan tersebutdinyatakan dengan #i&ed'p$int, yaitu satu digit untuk tanda, empat digit untuk angka utuh dan lima digit untuk

    angka pecahan. Jangkauan bilangan tersebut adalah 0 sampai **** untuk angka utuh dan 0.00001 sampai

    0.***** untuk angka pecahan, sehingga nilai bilangan yang mungkin adalah '****.***** sampai +****.*****

    dengan presisi 0.00001. $nt$h bilangan tersebut yang valid adalah '*.00102 dan 100.****-. Bilangan 10000tidak bisa dinyatakan dengan sistem bilangan sepuluh digit ini. /edangkan bilangan 0.00000 tidak memenuhi

    deraat presisi yang diinginkan, alaupun berada dalam angkauan bilangan. Bilangan tersebut akan dibulatkan

    ke 0.00000 atau 0.00001, yang berarti ada selisih sebesar 0.00000 dari nilai yang diinginkan.

    alam aplikasi sainti#ik, mungkin akan terdapat bilangan yang sangat besar atau sangat kecil. Bilangan tersebutharus dapat direpresentasikan dengan tepat (presisi", yaitu menggunakanfloating-point. Bilanganfloating-point

    direpresentasikan dengan mantissa yang berisi digit signi#ikan dan eksp$nen dari radi&

    Format: mantisaReksponen

    epresensasi bilanganfloating-pointseringkali din$rmalisasi terhadap radi&nya, misalnya 1, 10 44atau 1,

    23 10 5 36

    7$rmat bilanganfloating-pointbiner telah distandarkan $leh 8999 !4'200- (atau 8/:;89;8999 60*%2011",

    yaitu meliputi #$rmat 16'bit (half", 32'bit (single-precision", 64'bit (double-precision", -0'bit (double-extended"dan 12-'bit (quad-precision". i bab ini hanya dibahas tentang #$rmat dasar, yaitu 32'bit dan 64'bit.

    Bilangan Floating-Point 32-bit (single-precision)

    Bilanganfloating-point32'bit tersusun atas (

  • 7/23/2019 Bilangan Floating Point[1]

    2/6

    eksp$nen sebenarnya (9&p", yaituExp = E 127. engan excess-127, nilai 9 akan selalu p$siti# dengan

    angkauan 0 sampai 2.

    ?ilai ekstrem adalah untuk 9>0 dan 9>2

    o 9>0 menyatakan bilangan ?:L (ikaM> 0" dan subn$rmal (ikaM@ 0"

    o 9>2 menyatakan bilangan AC A9D8?not-a-number"

    Aable 0.1 ?ilai eksp$nen di #$rmat #l$ating'p$int 32'bit

    /aat nilai mantisa ()" din$rmalisasi, most significant bit()/B" selalu 1. ?amun, bit )/B ini tidak perludisertakan secara eksplisit di #ield mantisa (Aabel 0.1I". ?ilai mantisa yang sebenarnya adalah 1.M, sehingga

    nilai bilangan #l$ating'p$intnya menadi%

    i bilangan subn$rmal, nilai mantisa sebenarnya adalah 0.), sehingga bilangan #l$ating'p$intnya menadi%

    engan mantissa 23 bit ini ditambah 1 bit implisit, t$tal presisi dari representasi #l$ating'p$int 32'bit ini adalah24 bit atau sekitar ! digit desimal (yaitu 24 log10(2" > !.22".

    alam pemr$graman, suatu bilangan single'precisi$n ini dideklarasikan dengan tipe datafloat(bahasa , ++,

    Java" dansingle(Gascal, B, )ALB".float anumber; // 32-bit single precision number

    int main(){

    anumber = -1.1245;

    ...

    return 0;

    Contoh 1

    Bilangan #l$ating'p$int dinyatakan dengan!> 0x3E600000 . ?yatakan B sebagai bilangan pecahan desimal.

    epresentasi bilangan #l$ating'p$int 32'bit dapat dinyatakan seperti

  • 7/23/2019 Bilangan Floating Point[1]

    3/6

    Jadi,!> 0x3E6300000 menyatakan bilangan #l$ating'p$int 0.21-!

    7igure 0.2 $nt$h bilangan #l$ating'p$int 32'bit!> 0x3E60000

    Contoh 2

    Aentukan nilai pecahan desimal dari bilangan #l$ating'p$int B=000600000 ( (3"10+ (0.62"10

    > (100011"2+ (0.1001"2

    > (100011.1001"2

    > (1.000111001"2 2

    ari perhitungan di atas, nilai eksp$nenE> + 12! > 132 > 10000100 dan mantissaM> 000111001, sehinggadiper$leh!> 0x420E4000 (

  • 7/23/2019 Bilangan Floating Point[1]

    4/6

    Bilangan #l$ating'p$int negati# mempunyai bentuksign-magnitude, yaitu nilai / menunukkan tanda sedangkan

    besar nilai ditunukkan $leh mantissa dan eksp$nennya.

    Contoh 4

    ?yatakan #$rmat #l$ating'p$int 32'bit dari bilangan"> 5 0.21-!

    ari $nt$h I, nilai bilangan 5"> + 0.21-! adalah 0 x3E600000. engan mengubah #ield />1, maka

    bilangan dinyatakan dengan 0x!E600000 ( 5 0.21-! dinyatakan dengan 0 x!E600000

    Bilangan Floating-Point 64-bit (double-precision)

    Bilanganfloating-point64'bit tersusun atas ( 5 *23 danEmax(2046" > 1023E

    9ksp$nen (9" )antissa>0 )antissa @ 0 Gersamaan

    0 0, '0 subn$rmal ( 5 1"S 0.bitsignifian 25 1022

    1'2046 ?ilai tern$rmalisasi ( 5 1"S 1.bitsignifian 2E5 1023

    204! H bukan bilangan (??>not-a-number"

    http://didik.blog.undip.ac.id/?p=1427http://didik.blog.undip.ac.id/?p=1427-3http://didik.blog.undip.ac.id/?p=1427-3http://didik.blog.undip.ac.id/?p=1427-doublehttp://didik.blog.undip.ac.id/?p=1427http://didik.blog.undip.ac.id/?p=1427http://didik.blog.undip.ac.id/?p=1427-3http://didik.blog.undip.ac.id/?p=1427-doublehttp://didik.blog.undip.ac.id/?p=1427
  • 7/23/2019 Bilangan Floating Point[1]

    5/6

    Aable 0.2 ?ilai eksp$nen di #$rmat #l$ating'p$int 64'bit

    ?ilai mantisa ()" din$rmalisasi, yang berarti most significant bit()/B" selalu 1. Bit )/B ini tidak perludisertakan secara eksplisit di #ield mantisa. ?ilai mantisa sebenarnya adalah 1.M, sehingga nilai bilangan

    #l$ating'p$intnya menadi%

    engan mantissa 2 bit ini ditambah 1 bit implisit, t$tal presisi dari representasi #l$ating'p$int 32'bit ini adalah3 bit atau sekitar 16 digit desimal (yaitu 3 log10(2" > 1.**".alam pemr$graman, suatu bilangan single'precisi$n ini dideklarasikan dengan tipe data double(bahasa , +

    +, Java".!ouble anumber; // "4-bit !ouble precision number

    int main(){

    anumber = -1.1245;

    ...

    return 0;

    Contoh 5

    Bilangan #l$ating'p$int dinyatakan dengan!> 0x3%&000000000000 . ?yatakan B sebagai bilangan pecahandesimal.

    epresentasi bilangan #l$ating'p$int 64'bit dapat dinyatakan seperti 0x3%&000000000000 menyatakan bilangan #l$ating'p$int 0.32-12

    7igure 0.! $nt$h bilangan #l$ating'p$int 64'bit!> 0x3%&000000000000 > 0.32-12

    Contoh 6

    ?yatakan bilangan pecahan desimal B>3.62 dalam #$rmat #l$ating'p$int 64'bit

    Bilangan B dipecah menadi bilangan utuh dan bilangan pecahan. Bilangan utuh dan bilangan pecahan

    dik$nversikan ke biner (nyatakan bilangan seperti di #i&ed'p$int". Cedua bilangan tersebut disatukan dan

    din$rmalkan (geser" untuk mendapatkan nilai mantissa dan eksp$nen akhir.

    ! > (3.62"10

    > (3"10+ (0.62"10

    > (100011"2+ (0.1001"2

    > (100011.1001"2

    > (1.000111001"2 2

    http://didik.blog.undip.ac.id/?p=1427-double-1http://didik.blog.undip.ac.id/?p=1427-double-1http://didik.blog.undip.ac.id/?p=1427-double-1
  • 7/23/2019 Bilangan Floating Point[1]

    6/6

    ari perhitungan di atas, nilai eksp$nenE> + 1023 > 102- > 10000000100 dan mantissaM> 000111001,

    sehingga diper$leh!> 0x4041'-00000000 ( 5 0.32-12

    ari $nt$h 0.!I, nilai bilangan 5"> + 0.32-12 adalah 0 x3%&000000000000. engan mengubah #ield

    />1, maka bilangan dinyatakan dengan 0x!%&000000000000 ( 5 0.32-12 dinyatakan dengan 0 x3%&000000000000

    Latihan

    1. ?yatakan bilangan pecahan desimal dari bilangan #l$ating'p$int"> 0x'%200000

    2. Ditung nilai maksimal bilangan #l$ating'p$int 32'bit n$rmal

    3. Ditung nilai minimal dan maksimal bilangan #l$ating'p$int 32'bit subn$rmal

    4. ?yatakan bilangan (3."10dalam #$rmat single

    !"!r!n#i

    1. 8999 $mputer /$ciety (ugust 2*, 200-", K8999 /td !4'200-% 8999 /tandard #$r 7l$ating'G$intrithmetic

    2. Gr$#. M.Cahan, K8999 /tandard #$r 7l$ating'G$int rithmetic, Lecture ?$te #r$m Nniversity $#ali#$rnia, 1**!. NL% http%;;.cs.berkeley.edu;Okahan;ieee!4status;8999!4.G7

    http://didik.blog.undip.ac.id/?p=1427-double-2http://didik.blog.undip.ac.id/?p=1427-double-1http://didik.blog.undip.ac.id/?p=1427-double-3http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDFhttp://didik.blog.undip.ac.id/?p=1427-double-2http://didik.blog.undip.ac.id/?p=1427-double-1http://didik.blog.undip.ac.id/?p=1427-double-3http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF