JavaRush /Java Blog /Random-TK /Floüzýän nokadyň içinde näme bar we ol nähili işleýär?
Ivan
Dereje
Харьков

Floüzýän nokadyň içinde näme bar we ol nähili işleýär?

Toparda çap edildi

Mazmuny:

Surat: http://pikabu.ru/

Giriş

Java-y öwrenen ilkinji günlerimde ýüzýän nokatlar ýaly gyzykly başlangyç görnüşlerine duş geldim. Derrew olaryň aýratynlyklary, hasam beteri, ikilik kodda ýazylyşy (biri-biri bilen baglanyşykly) bilen gyzyklandym. Islendik bitewi sanlardan tapawutlylykda, hatda gaty kiçi aralykda-da (mysal üçin, 1-den 2-e çenli) olaryň çäksiz sany bar. Memoryadyň çäkli bolmagy bilen bu toplumy aňlatmak mümkin däl. Onda ikili görnüşde nähili beýan edilýär we nähili işleýärler? Haýp, wikidäki düşündirişler we bu ýerdäki Habré hakda gaty gowy makala , düýbüni tutandyklaryna garamazdan maňa doly düşünmedi. Düşünmek, diňe şu derňew makalasyny irden okanyňyzdan soň ýüze çykdy.

Taryha gezelenç

. _ _ _ _ Her kompýuter muny başgaça etdi we hersiniň öz ýalňyşlyklary bardy. 70öne 70-nji ýyllaryň ortalarynda Intel goldanýan “kämilleşdirilen” arifmetika bilen täze prosessorlary ýasamak we şol bir wagtyň özünde standartlaşdyrmak kararyna geldi. Ony ösdürmek üçin professorlar William Kahan we Jon Palmer (ýok, piwo hakda kitaplaryň awtory däl) getirildi. Käbir drama bardy, ýöne täze standart döredildi. Indi bu standart IEEE754 diýilýär

Loüzýän nokadyň belgisi

Mekdep okuw kitaplarynda-da 1,2 × 1000 = 1200 deň bolan 1,2 × 10 3 ýa-da 1,2 E3 görnüşdäki gaty uly ýa-da gaty az sanly ýazuw usuly bilen ýüzbe-ýüz boldy . Muňa ekspensial bellik usuly diýilýär. Bu ýagdaýda, N = M × n p formulasyny ulanyp , san aňlatmasy bilen iş salyşýarys
  • N = 1200 - emele gelen san
  • M = 1,2 - mantissa - sargytlary hasaba almazdan fraksiýa bölegi
  • n = 10 tertip esasydyr. Bu ýagdaýda we kompýuterler hakda aýdanymyzda, esas 10-njy belgidir
  • p = 3 - esasy dereje
Köplenç buýrugyň esasy 10 hasaplanýar we diňe mantissa we bazanyň bahasy ýazylýar we olary E harpy bilen bölýär. Mysal üçin, 1,2 × 10 3 we 1.2 E3 ekwiwalent ýazgylar berdim , hemme zat düşnükli bolsa we nostalgiki ekskursiýany mekdebiň okuw meýilnamasyna tamamlasak, indi muny ýatdan çykarmagy maslahat berýärin, sebäbi ýüzýän nokat belgisini emele getirenimizde ikisiniň güýji, onlarça däl, ýagny n = 2 , 1.2E3 sazlaşykly formulanyň hemmesi bozulýar we beýnimi hakykatdanam döwdi.

Gol we dereje

Bizde näme bar? Netijede, mantisadan ybarat ikilik sanymyz bar - bir güýje we güýjüň özüne göterjek bölegimiz. Mundan başga-da, bitewi görnüşlerde bolşy ýaly, ýüzýän nokatlaryň sanlary belgini kesgitleýär - san polo positiveitel ýa-da otrisatel bolar. Mysal hökmünde float32 bitden ybarat görnüşini göz öňünde tutmagy teklip edýärin. Iki gezek takyk sanlar bilen doublelogika birmeňzeş, diňe iki esse köp. 32 bitden iň möhümi belgä bölünýär, indiki 8 bit eksponente - mantisany ýokarlandyrjak güýjümiz, galan 23 bit bolsa mantisada paýlanýar. Görkezmek üçin bir mysala seredeliň: Floüzýän nokadyň içindäki zatlar we onuň işleýşi - 1Birinji bit gaty ýönekeý. Birinji bitiň bahasy 0 bolsa , alýan sanymyz polo beitel bolar . Eger bit 1 bolsa , onda san negatiw bolar . 8 bitiň indiki bloky eksponent blokudyr. Eksponent adaty sekiz bitli san hökmünde ýazylýar we zerur dereje almak üçin emele gelen belgiden 127 aýyrmaly . Biziň ýagdaýymyzda, eksponentiň sekiz biti 10000001 . Bu 129 belgä gabat gelýär . Muny nädip hasaplamalydygy barada soragyňyz bar bolsa, surat çalt jogaby görkezýär. Giňeldilen wersiýany islendik Boolean algebra kursynda alyp bolýar. Floüzýän nokadyň içindäki zatlar we onuň işleýşi - 21 × 2 7 + 0 × 2 6 + 0 × 2 5 + 0 × 2 4 + 0 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0 = 1 × 128 + 1 × 1 = 128+ 1 = 129 Bu 8 bitden alyp boljak iň köp mukdaryň 11111111 2 = 255 10 ( 2-nji we 10 -njy ýazgy ikilik we onluk san ulgamlaryny aňladýar) hasaplamak kyn däl , ýöne diňe oňyn eksponent bahalaryny ulansak ( 0-dan 255-e çenli ), onda emele gelen sanlar onluk nokatdan öň köp sanly bolar, ýöne soň däl? Derejäniň negatiw bahalaryny almak üçin döredilen eksponentden 127 aýyrmaly . Şeýlelik bilen, derejeleriň diapazony -127-den 128-e çenli bolar . Mysalymyzy ulanyp, zerur dereje 129-127 = 2 bolar . Geliň häzirlikçe bu belgini ýada salalyň.

Mantissa

Indi mantissa hakda. 23 bitden ybarat, ýöne başynda bitler bölünmeýän başga bir bölüm bar. Bu maksada laýyklyk we ykdysadyýet sebäpli edilýär. Şol bir san, onluk nokatdan öň ýa-da soň mantisada nol goşmak bilen dürli güýçlerde aňladylyp bilner. Muňa düşünmegiň iň aňsat usuly onluk eksponent bilen: 120,000 = 1,2 × 10 5 = 0.12 × 10 6 = 0.012 × 10 7 = 0,0012 × 10 8 we ş.m. Şeýle-de bolsa, mantisanyň kellesine belli bir san girizip, her gezek täze sanlary alarys. Geliň, 23 bitimizden ozal ýene biri bolar diýip kabul edeliň. Adatça bu bit galanlardan nokat bilen bölünýär, ýöne bu hiç zady aňlatmaýar. Has amatly 1. 111000000000000000000000 Floüzýän nokadyň içindäki zatlar we onuň işleýşi - 3Indi emele gelen mantisany her ädim bilen bir gezek azaldyp, çepden saga bir güýç ýokarlandyrmaly. Hasaplamagyň netijesinde alan güýjümiziň bahasyndan başlaýarys, ýagny 2 (iki güýjüň her bahasyny ýazmazlyk üçin bilgeşleýin ýönekeý bir mysal saýladym we olary ýokardaky tablisada hasaplamadym degişli bit nol) Floüzýän nokat sanynyň içindäki zatlar we nähili işleýär - 41 × 2 2 + 1 × 2 1 + 1 × 2 0 + 1 × 2 -1 = 1 × 4 + 1 × 2 + 1 × 1 + 1 × 0,5 = 4 + 2 + 1 + 0,5 = 7.5 we 7.5 netijesini aldyňyz , dogrulygyny barlap bilersiňiz, mysal üçin şu baglanyşykda

Netijeler

Adaty ýüzýän nokat belgisi float32 bitden durýar, birinji bit belgidir (+ ýa-da), indiki sekiz görkeziji, indiki 23-si mantissa Belgi bilen - 0 bit pozitiw san bolsa. 1-nji bit negatiw bolsa. Ekspensial boýunça - bitwise onluk sana öwürýäris (çepden birinji bit 128 , ikinjisi 64 , üçünjisi 32 , dördünji 16 , bäşinji 8 , altynjy 4 , ýedinji 2 , sekizinjisi 1 ), emele gelen sandan 127 aýyryň , başlajak derejämizi alarys. Mantisanyň pikiriçe - öňdäki bar bolan 23 bite 1 bahasy bilen başga bir zat goşýarys we ondan alýan güýjümizi her bit bilen azaldyp, alýan güýjümize göterip başlaýarys. Bu adamlar, çagalar! Floüzýän nokadyň içindäki zatlar we onuň işleýşi - 5PS: Öý işi hökmünde, bu makalany ulanyp, ýüzýän nokatlar bilen köp sanly arifmetiki amallar bilen takyk ýalňyşlyklaryň näme üçin ýüze çykýandygy baradaky wersiýalaryňyzy teswirlerde goýuň.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION