JavaRush /Блоги Java /Random-TG /Дар дохили рақами нуқтаи шинокунанда чӣ мавҷуд аст ва он ...
Ivan
Сатҳи
Харьков

Дар дохили рақами нуқтаи шинокунанда чӣ мавҷуд аст ва он чӣ гуна кор мекунад?

Дар гурӯҳ нашр шудааст

Мундариҷа:

Тасвир: http://pikabu.ru/

Муқаддима

Дар рӯзҳои аввали омӯзиши Java, ман бо чунин намуди кунҷкобу ибтидоӣ, ба монанди рақамҳои нуқтаи шинокунанда дучор шудам. Ман дарҳол ба хусусиятҳои онҳо ва ҳатто бештар аз он, ба тарзи навиштани онҳо дар codeи дуӣ (ки бо ҳам алоқаманд аст) таваҷҷӯҳ доштам. Бар хилофи ҳама гуна диапазони бутун, ҳатто дар диапазони хеле хурд (масалан, аз 1 то 2) шумораи беохири онҳо вуҷуд дорад. Ва дорои андозаи маҳдуди хотира, ифодаи ин маҷмӯа ғайриимкон аст. Пас, онҳо дар дуӣ чӣ гуна ифода карда мешаванд ва онҳо чӣ гуна кор мекунанд? Мутаассифона, тавзеҳот дар вики ва мақолаи хеле ҷолиб дар бораи Ҳабре дар ин ҷо ба ман фаҳмиши пурра надоданд, гарчанде ки онҳо асос гузоштаанд. Фаҳмиши он танҳо пас аз хондани ин мақолаи таҳлилӣ субҳи пас аз хондани он ба даст омад.

Экскурсия ба таърих

( Аз ин мақола дар Ҳабре гирифта шудааст ) Дар солҳои 60-70, вақте ки компютерҳо калон ва барномаҳо хурд буданд, то ҳол стандарти ягонаи ҳисобҳо ва инчунин стандарти ифодаи худи рақами нуқтаи шинокунанда вуҷуд надошт. Ҳар як компютер онро ба таври гуногун иҷро мекард ва ҳар як хатогиҳои худро дошт. Аммо дар миёнаҳои солҳои 70-ум, Intel тасмим гирифт, ки протсессори навро бо арифметикаи "беҳбудёфта" созад ва ҳамзамон онро стандартизатсия кунад. Барои таҳияи он профессорҳо Вилям Каҳан ва Ҷон Палмер (не, муаллифи китобҳо дар бораи пиво нестанд) оварда шуданд. Якчанд драма вуҷуд дошт, аммо стандарти нав таҳия карда шуд. Ҳоло ин стандарт IEEE754 номида мешавад

Формати рақами нуқтаи шинокунанда

Ҳатто дар китобҳои дарсии мактабӣ ҳама бо тарзи ғайриоддии навиштани ададҳои хеле калон ё хеле хурди шакли 1,2 × 10 3 ё 1,2 E3 , ки ба 1,2 × 1000 = 1200 баробар аст, рӯ ба рӯ мешуданд . Ин усули қайди экспоненсиалӣ номида мешавад. Дар ин маврид мо бо ифодаи адад бо формулаи зерин кор мекунем: N=M×n p , ки дар он
  • N = 1200 - рақами натиҷавӣ
  • M = 1,2 - мантиса - қисми касрӣ, бе назардошти фармоишҳо
  • n = 10 асоси фармоиш аст. Дар ин ҳолат ва вақте ки мо дар бораи компютерҳо гап намезанем, асос рақами 10 аст
  • p = 3 - дараҷаи асос
Аксар вақт, асоси фармоиш 10 ҳисобида мешавад ва танҳо мантиса ва арзиши асос навишта шуда, онҳоро бо ҳарфи Е ҷудо мекунанд. Дар мисоли мо, ман сабтҳои муодor 1,2 × 10 3 ва 1,2 E3 додам , агар ҳама чиз равшан бошад ва мо экскурсияи ностальгиро ба барномаи таълимии мактаб анҷом дода бошем, пас ҳоло ман тавсия медиҳам, ки инро фаромӯш кунем, зеро ҳангоми ташкor рақами шинокунанда мо бо он сарукор дорем. қудрати ду, на даҳҳо, яъне. n = 2 , тамоми формулаи ҳамоҳангшудаи 1.2E3 вайрон мешавад ва он дар ҳақиқат мағзи маро шикаст.

Аломат ва дараҷа

Пас, мо чӣ дорем? Дар натиҷа, мо рақами дуӣ низ дорем, ки аз мантиса иборат аст - қисме, ки мо ба як қудрат ва худи қудрат мебардорем. Илова бар ин, ҳамон тавре, ки бо намудҳои бутун маъмул аст, рақамҳои нуқтаҳои шинокунанда каме доранд, ки аломатро муайян мекунанд - оё рақам мусбат ё манфӣ хоҳад буд. Ҳамчун мисол, ман пешниҳод мекунам, ки навъи float, ки аз 32 бит иборат аст, баррасӣ карда шавад. Бо рақамҳои дақиқи дукарата doubleмантиқ якхела аст, танҳо ду баробар зиёд битҳо вуҷуд доранд. Аз 32 бит, аввалини муҳимтарин ба аломат ҷудо карда мешавад, 8 битҳои баъдӣ ба экспонент - қудрате, ки мо мантиссаро баланд мебарем ва 23 битҳои боқимонда - ба мантисса ҷудо карда мешаванд. Барои нишон додан, биёед як мисолро дида бароем: Дар дохor рақами нуқтаи шинокунанда чӣ мавҷуд аст ва он чӣ гуна кор мекунад - 1Бити аввал хеле содда аст. Агар арзиши бити аввал 0 бошад , он гоҳ адади бадастовардаи мо мусбат хоҳад буд . Агар бит 1 бошад , рақам манфӣ хоҳад буд . Блоки навбатии 8 бит блоки экспонентист. Нишондиҳанда ҳамчун рақами муқаррарии ҳашт-битӣ навишта мешавад ва барои гирифтани дараҷаи зарурӣ мо бояд 127-ро аз адади натиҷавӣ хориҷ кунем.Дар ҳолати мо ҳашт битҳои экспонент 10000001 мебошанд . Ин ба рақами 129 мувофиқат мекунад . Агар шумо саволе дошта бошед, ки чӣ тавр онро ҳисоб кардан мумкин аст, пас расм ҷавоби зудро нишон медиҳад. Варианти васеъшударо дар ҳама гуна курси алгебраи булӣ гирифтан мумкин аст. Дар дохor рақами нуқтаи шинокунанда чӣ мавҷуд аст ва он чӣ гуна кор мекунад - 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 Ҳисоб кардан душвор нест, ки шумораи максималие, ки мо аз ин 8 бит ба даст оварда метавонем, 11111111 2 = 255 10 мебошад (зери 2 ва 10 маънои системаҳои рақамии дуӣ ва даҳиро дорад) Аммо, агар мо танҳо арзишҳои экспонентҳои мусбатро истифода барем. ( аз 0 то 255 ), он гоҳ ададҳои натиҷавӣ пеш аз нуқтаи даҳӣ ададҳои зиёд доранд, аммо баъд аз он не? Барои ба даст овардани арзишҳои манфии дараҷа, шумо бояд 127-ро аз экспоненти тавлидшуда хориҷ кунед . Ҳамин тариқ, диапазони дараҷаҳо аз -127 то 128 хоҳад буд . Бо истифода аз мисоли мо, дараҷаи зарурӣ 129-127 = 2 хоҳад буд . Биёед ҳоло ин рақамро дар хотир дорем.

Мантисса

Акнун дар бораи мантиса. Он аз 23 бит иборат аст, аммо дар аввал ҳамеша воҳиди дигаре вуҷуд дорад, ки барои он битҳо ҷудо карда намешаванд. Ин бо сабабхои ба максад мувофик ва сарфакорй карда мешавад. Як ададро метавон бо ҷиҳатҳои гуногун бо илова кардани сифр ба мантиса пеш аз нуқтаи даҳӣ ё баъд аз он ифода кард. Роҳи осонтарини фаҳмидани ин бо нишондиҳандаи даҳӣ аст: 120,000 = 1,2×10 5 = 0,12×10 6 = 0,012×10 7 = 0,0012×10 8 ғ. Аммо бо ворид кардани рақами муқарраршуда дар сари мантиса, мо ҳар дафъа рақамҳои нав мегирем. Биёед онро як чизи муқаррарӣ қабул кунем, ки пеш аз 23 битҳои мо боз як бит бо як хоҳад буд. Одатан ин бит аз боқимонда бо нуқта ҷудо карда мешавад, аммо ин маънои онро надорад. Ин танҳо қулайтар аст 1. 11100000000000000000000000000000000 Дар дохor рақами нуқтаи шинокунанда чӣ мавҷуд аст ва он чӣ гуна кор мекунад - 3дар натиҷа бояд ба қудрат эҳтиёҷ дошта бошад, то рост ба рост бардошта шавад, қувваи барқро бо ҳар як қадам паст кунед. Мо аз арзиши қуввае, ки дар натиҷаи ҳисоб ба даст овардаем, оғоз мекунем, яъне 2 (ман дидаву дониста як мисоли оддиеро интихоб кардам, то ҳар як арзиши қувваи дуро нанависам ва онҳоро дар ҷадвали боло ҳисоб накардам, вақте ки бит ба сифр баробар аст) Дар дохor рақами нуқтаи шинокунанда чӣ мавҷуд аст ва он чӣ гуна кор мекунад - 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 ва натиҷаи 7.5 гирифт , дурустии онро метавон тафтиш кард, масалан, дар ин пайванд

Натиҷаҳо

Рақами стандартии шинокунанда floatаз 32 бит иборат аст, битҳои аввал аломати (+ ё -), ҳашттои баъдӣ нишондиҳанда, 23-и дигар мантисса Бо аломати - агар бит 0 адади мусбат бошад. Агар бит 1 манфӣ бошад. Бо экспоненсиалӣ - мо аз рӯи бит ба адади даҳӣ табдил медиҳем (бити аввал аз чап 128 , дуюм 64 , сеюм 32 , чорум 16 , панҷум 8 , шашум 4 , ҳафтум 2 , ҳаштум 1 аст ), аз рақами натиҷавӣ 127-ро хориҷ кунед , мо дараҷаеро мегирем, ки бо он оғоз мекунем. Мувофиқи мантисса - ба 23 битҳои мавҷуда дар пеш мо бити дигареро бо арзиши 1 илова мекунем ва аз он мо ба баланд бардоштани қудрати гирифтаамон шурӯъ мекунем ва ин қудратро бо ҳар як бити минбаъда кам мекунем. Ҳамааш ҳамин аст, бачаҳо! Дар дохor рақами нуқтаи шинокунанда чӣ мавҷуд аст ва он чӣ гуна кор мекунад - 5PS: Ҳамчун вазифаи хонагӣ, бо истифода аз ин мақола, дар шарҳҳо versionҳои худро гузоред, ки чаро хатогиҳои дақиқ бо шумораи зиёди амалҳои арифметикӣ бо рақамҳои нуқтаи шинокунанда рух медиҳанд
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION