JavaRush /Java блогу /Random-KY /Компьютердин эс тутумундагы реалдуу сандар. Түшүндүрмө.
Marianna
Деңгээл
Москва

Компьютердин эс тутумундагы реалдуу сандар. Түшүндүрмө.

Группада жарыяланган
Кутмандуу күнүң менен! Биринчи квесттин «Чыныгы сандар менен иштөөнүн нюанстары» (2-бөлүм. Калкыма чекиттүү сандардын түзүлүшү) лекциясын жана тема боюнча кошумча лекцияларды окуп жатып, көпчүлүк бул тема боюнча көптөгөн суроолорго туш болушса керек. Башында мен өзүмө керектүү жоопторду берүүгө аракет кылдым, эми ырааттуу логикалык тартипте толук түшүнүүгө жардам берүү үчүн аларды сизге сунуш кылам. 1. Ондук жана экorк санауу системалары. 1.1 Ондук сан системасы эң кеңири таралган системалардын бири; бул биз мектепте, университетте, жашоодо компьютердик эмес математикалык эсептөөлөр үчүн колдонгон система. Анда 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 (арабча) сандары колдонулат - бардыгы 10 цифра. Сандардын римдик жазуусу да бар, бирок ал азыр дээрлик колдонулbyte. Ондук системада саноо бирдик, ондук, жүздүк, миңдик, он миңдик, жүз миңдик, миллиондук ж.б.у.с. - башкача айтканда, бул сандын бардык сандары. Сандын цифрасы – бул цифранын сан жазуусундагы орду (ордун). Натурал сандардын эң төмөнкү цифрасы (жана эң аз маанилүүсү ) бирдиктердин цифрасы (оң жактагы) болуп саналат. Эмне үчүн ал эң маанисиз? Анткени сандын бирдик цифрасын түшүрүү менен сандын өзү минималдуу өзгөрөт (мисалы, 345 жана 340 сандары). Андан кийин, экинчи цифра ондук сан ж.б. Мунун баары эмнени түшүндүрөт? Ондук системадагы каалаган бүтүн санды алып, аны цифраларга бөлөлү . 3297 = 3*1000 + 2*100 + 9*10 + 7 Ошентип, 3297 саны төртүнчү сандын 3 бирдигин (б.а. 3 миң), үчүнчү цифранын 2 бирдигин (2 жүз), 9 камтыганын табабыз. экинчи сандын бирдиги (9 ондук) жана биринчи сандын 7 бирдиги . Башка сөз менен айтканда, бул сан үч миң эки жүз токсон жети болуп саналат жана ал тиешелүү түрдө позициялык . Бөлчөк (чыныгы) сандардын цифралары жөнүндө эмне айтууга болот ? Бөлчөк сандардын цифралары (алардын бөлчөк бөлүгү) мындай деп аталат: ондук, жүздүк, миңдик, он миңдик ж.б. Сан ондук чекиттен (сандын бүткүл бөлүгүнөн) канчалык алыс болсо, анын мааниси ошончолук аз болот (аны таштасаңыз, сандын мааниси аз өзгөрөт). Мисалы, ондук катары берилген каалаган бөлчөк санды алалы: 25,076 = 2*10 + 5 +0*0,1 + 7*0,01 +6*0,001 Ошентип, 25,076 бөлчөк санында 2 ондук, 5 бирдик, 0 ондук бар экенин табабыз. , 7 сотых жана 6 миңден. Ондук система 10 цифраны жана 10 орундун эселенген санын колдонот - демек, "ондук" деп аталат. 1.2 Экorк санауу системасы дээрлик бардык заманбап компьютерлерде жана башка эсептөөчү электрондук түзүлүштөрдө колдонулган санауу системасы. Сандарды жазуу үчүн ал эки гана цифраны колдонот - 0 жана 1. Сан кайсы системада жазылганын чаташтырбоо үчүн, анын төмөнкү оң жагында көрсөткүч (ал санауу системасынын негизи болуп саналат ) менен камсыз кылынат. мисал: 1000₁₀ 1000₂ Бул жерде биринчи сан ондук системада тааныш миң , ал эми төмөнкү сан экorк системадагы сан жана ондук системада бирдей... 8 ! Ондук система сыяктуу эле, экorк система да сандарды сандарга бөлөт . Экorк сандагы ар бир цифра бит (же цифра ) деп аталат. (Эгер кимдир бирөө кызыктырса, төрт бит - тиш (же тетрад), 8 бит - byte , 16 бит - сөз , 32 бит - кош сөз ). Биттер (цифрлар) да нөлдөн баштап оңдон солго карай номерленет (ондук системадан айырмаланып). Эң аз мааниге ээ, эң аз маанилүү, оң бит 0 ырааттуулугуна ээ . Андан кийин биринчи бит келет , экинчи ж.б. _ - дээрлик баштапкыга барабар.Бирок жүздүктөрдү алып салсаңыз, сизде 1050 саны калат, бул баштапкы мааниден мурунтан эле алыс, анткени жүздүктөр орду бирдиктердин ордуна караганда алда канча маанилүү (жогорку даражалуу) ). Мисал. Төмөндө бул бөлчөк экorк сандын биттери кызыл менен номерленген – бардыгы болуп бизде бул сандын 18 бит (цифри) бар. Алдыга карап, бөлчөк сандар компьютердин эстутумунда такыр башка жол менен сакталганын белгилегим келет - бул тууралуу кийинчерээк талкууланат. Ал ортодо, келгиле, сандарды бир санап системасынан экинчисине которууну үйрөнөлү. 2. Бүтүн жана бөлчөктөрдү ондук системадан экorк системага жана тескерисинче которуу. 2.1 Ондук системадан экorк системага которуу. 2.1.1 Бүтүн сандар. ОКУБА :))) Компьютердин эсиндеги реалдуу сандар.  ӨНҮКТҮРҮҮДӨ!!!  - 2 Бүтүн ондук санды экorк санауу системасына которуу үчүн бул санды 2ге бөлүп, бөлүүнүн калган бөлүгүн жазыңыз (сандын жуп же так экенине жараша ар дайым 0 же 1ге барабар) , жана бөлүү натыйжасын кайра 2ге бөлүңүз, бөлүүнүн калган бөлүгүн дагы бир жолу жазыңыз (0 же 1) жана экинчи бөлүнүүдөн алынган натыйжаны дагы 2ге бөлүңүз.Бөлүүнүн натыйжасы бирге барабар болмоюнча ушул жолду улантыңыз. Андан кийин, биз ар дайым 1ге барабар болгон эң акыркы бөлүү натыйжасынан баштап, бардык алынган нөлдөрдү жана бирдерди тескери тартипте жазабыз . КАНДАЙ БУТУНДУ 2ге ырааттуу бөлүүнүн жыйынтыгы дайыма бир (1) болуп калат! Эгерде натыйжа 1ден чоң болсо, натыйжада бир болгонго чейин бул жыйынтыкты 2ге бөлүүнү улантабыз. Ал эми 2ге бөлүүнүн натыйжасы бир гана учурда нөлгө (0) болушу мүмкүн - бул нөлдүн өзүн 2ге бөлүү. Мисал. 145 санын ондук системадан экorк системага которолу . 145/2 = 72 (калды 1 ) 72/2 = 36 (калды 0 ) 36/2 = 18 (калды 0 ) 18/2 = 9 (калды 0 ) 9/2 = 4 (калды 1 ) 4/2 = 2 ( 0 калды ) 2/2 = 1 ( 0 калды ) Эми биз экorк саныбызды тескери тартипте “чогулабыз”. Биз 10010001 номерин алабыз . Бүттү! Кызыктуу нюанс 1. 1 санын ондук системадан экorк системага которолу . Экorк системада бул сан да 1 деп жазылат.Анткени , 1ге барабар болушу керек болгон 2ге бөлүүнүн акыркы натыйжасы 1 санынын өзүнө барабар.1₁₀ = 1₂ Кызыктуу нюанс 2. Айландыралы ондук системадан экorк системага 0 саны . Экorк системада бул сан 0 катары да жазылат. 0₁₀ = 0₂ 2.1.2 Бөлчөк сандар. Бөлчөк сандарды экorкке кантип которуу керек? Ондук бөлчүктү экorк санауу системасына өткөрүү үчүн төмөнкүлөр керек: а) 2.1.1-пункттун изилденген алгоритми боюнча бөлүктүн бүт бөлүгүн экorк системага которуу б) бөлчөктүн бөлчөк бөлүгүн 2ге көбөйтүү , жазуу керек. ондук чекиттен АЛДЫНДА жыйынтыктын жыйынтык цифрасы (ар дайым 0 же 1ге барабар, бул логикалуу), андан кийин алынган натыйжанын бөлчөк бөлүгүн ГАНА 2ге көбөйтүңүз, дагы ондук чекиттин АЛДЫНДА (0 же 1) натыйжанын цифрасын жазыңыз жана бөлчөккө чейин улантыңыз. көбөйтүү натыйжасынын бир бөлүгү 0гө барабар болот же ондуктардын керектүү санына чейин (талап кылынган тактык ) (2ге көбөйтүүнүн санына барабар). Андан кийин чыныгы (бөлчөк) сандын бүтүн жана бөлчөк бөлүктөрүн бөлүп турган чекиттен кийин жазылган нөлдөрдүн жана бирдиктердин ТАРТИБИ боюнча алынган ырааттуулугун жазуу керек . Мисал 1. Ондук системадан 2,25 санын (2 чекит 25 жүздүк) экorк системага которолу . бинардык системада бөлчөк 10,01ге барабар болот . Муну кантип алдык? Сан бүтүн сандан (чекитке чейин) турат - бул 2 жана бөлчөк бөлүгү - бул 0,25. 1) Бүткүл бөлүктүн котормосу: 2/2 = 1 (калганы 0 ) Бүт бөлүк 10 болот . 2) Бөлчөк бөлүктүн котормосу. 0,25 * 2 = 0 ,5 (0) 0,5 * 2 = 1 ,0 (1) 2ге ырааттуу көбөйтүүнүн натыйжасында бөлчөк бөлүк 0гө барабар болду. Көбөйтүүнү токтотобуз. Эми биз ТАРТИП боюнча бөлчөк бөлүгүн "жыйноо" - бинардык системада 0,01 алабыз . 3) Бүтүн жана бөлчөк бөлүктөрүн кошуңуз - биз ондук бөлүк 2.25 экorк бөлчөк 10.01ге барабар болорун алабыз . Мисал 2. 0,116 санын ондук системадан экorк системага өткөрөлү . 0,116 * 2 = 0,232 (0) 0,232 * 2 = 0,464 (0) 0,464 * 2 = 0,928 (0) 0,928 * 2 = 1,856 (1) //бул жыйынтыктын бүтүн бөлүгүн жокко чыгаруу 0,816 * 1 = 2 . ) //бул жыйынтыктын бүт бөлүгүн жокко чыгаруу 0,712 * 2 = 1 .424 (1) //бул натыйжанын бүт бөлүгүн жокко чыгаруу 0,424 * 2 = 0 ,848 (0) Көрүнүп тургандай, көбөйтүү улана берет. , натыйжанын бөлчөк бөлүгү 0гө барабар болбойт. Андан кийин биз ондук бөлчөктү чекиттен кийин (бөлчөк бөлүгүндө) 7 ондук орунга (бит) тактык менен экorк системага айландырабыз деп чечебиз. Маанисиз биттер жөнүндө эмнени изилдегенибизди эстеп көрөлү - бит (бит) бүткүл бөлүктөн канчалык алыс болсо, ага көңүл бурбай коюу биз үчүн ошончолук жеңил болот (лекциянын 1-бөлүмүндөгү түшүндүрмө, ким унутуп калды). Биз чекиттен кийин 7 бит тактык менен 0,0001110 бинардык фракциясын алабыз . 2.2 Экorк системадан ондукка которуу. 2.2.1 Бүтүн сандар. толугу менен которуу үчүнсанды экorк системадан ондукка өткөрүү үчүн бул санды цифраларга (биттерге) бөлүп, ар бир цифраны (бит) 2 санына белгилүү бир оң даражага көбөйтүү керек (бул даража эң аз маанилүүдөн оңдон солго карай санай баштайт) (оң бит) жана 0дөн башталат ) . Башкача айтканда, экинин күчү берилген биттин санына барабар (бирок бул жазылбаган эреже бүтүн сандарды айландыруу учурунда гана колдонулушу мүмкүн , анткени бөлчөк сандар үчүн биттердин номери которулган бөлчөк бөлүктөн башталат ондук системага башкача ). Андан кийин сиз алынган продуктуларды кошуу керек . Мисал. 110011 экorк санын ондук сан системасына которолу . 110011₂ = 1*2⁵ + 1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º = 32 +16 +0 + 0 + 2 + 1 = 51₁₀ Натыйжада, биз 51 санын алабыз бинардык система. Маалымат үчүн, төмөндө 2 санынын биринчи ыйгарым укуктарынын tableсы келтирилген . ОКУБА :))) Компьютердин эсиндеги реалдуу сандар.  ӨНҮКТҮРҮҮДӨ!!!  - 5 ! Сандын нөлдүк деңгээли дайыма 1ге барабар экенин эске алыңыз . 2.2.2 Бөлчөк сандар. Экorк бөлчөк (реалдуу) санды ондукка айландыруу үчүн төмөнкүлөр керек: а) 2.2.1-пункттун алгоритми боюнча анын бүтүн бөлүгүн ондукка айландыруу ; б) анын бөлчөк бөлүгүн төмөнкүдөй которуу . Бөлчөк бөлүгүн белгилүү бир терс даражага көтөрүлгөн эки сандын көбөйтүлгөн суммасы катары көрсөтүү керек ( чекиттен кийинки биринчи сандын күчү (бөлчөктүн бүткүл бөлүгүнөн кийин) -1ге барабар болот, чекиттен кийинки экинчи цифра үчүн -2ге барабар болот ж.б.) Натыйжада бул сумма ондук системадагы сандын бөлчөк бөлүгү болот. Мисал. 10111.01 санын экorк системага которолу . 10111.01₂ = (1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º) . (0*2ˉ¹ + 1*2ˉ²) = (16 + 0 + 4 + 2 + 1) . (0 + 0,25) = 23,25₁₀ Натыйжада ондук сан системасында 23,25 санын алабыз. Төмөндө 2нин биринчи терс күчү tableсы берилген. 2.2.3 Сандарды экorк системадан ондук системага которуунун жалпы формуласы. Сандарды экorк системадан ондук системага которуунун жалпы формуласын берели (бүтүн жана бөлчөк бөлүктөрү да). мында А – экorк санауу системасындагы сан; Сан системасынын негизи 2 (ар бир бит даражага 2ге көбөйтүлөт дегенди билдирет); пОКУБА :))) Компьютердин эсиндеги реалдуу сандар.  ӨНҮКТҮРҮҮДӨ!!!  - 7 ОКУБА :))) Компьютердин эсиндеги реалдуу сандар.  ӨНҮКТҮРҮҮДӨ!!!  - 4— бүтүн цифралардын саны (бит) ; m - сандын бөлчөк сандарынын (биттеринин) саны . Бөлүүчү чекиттен бүтүн сандын биринчи бит кызыл түс менен белгиленген. Ал нөлгө чейин ар дайым 2ге көбөйтүлөт. Анын алдындагы кийинки бит (солго) биринчи даражага 2ге көбөйтүлөт, ж.б. Бөлүүчү чекиттен бөлчөк бөлүктүн биринчи бити жашыл түс менен белгиленет. Ал ар дайым минус биринчи даражага 2ге көбөйтүлөт. Оң жактагы кийинки бит минус экинчи даражага 2ге көбөйтүлөт, ж.б. 3. Илимий белгилер: эки системада тең нормалдаштырылган белги. Мантица, көрсөткүч, көрсөткүчтүн даражасы. 3.1 Санды жазуунун экспоненциалдык формасы. Мурда биз позициялык сандарды цифралар боюнча жазуунун деталдуу схемасын изилдеп чыкканбыз . 0.0000000000000000000016 санын алалы . Бул стандарттык түрдө абдан узун жазуусу бар . Ал эми экспоненциалдык түрдө ал төмөнкүдөй болот: 1.6 * 10ˉ²¹ Анда сандын экспоненциалдык формасы кандай жана бул формада санды кантип көрсөтүү керек? Сан үчүн orмий белгилер чыныгы сандарды мантисса жана көрсөткүч катары көрсөтүү болуп саналат . Абдан чоң жана өтө аз сандарды көрсөтүү үчүн, ошондой эле алардын жазууларын бириктирүү үчүн ыңгайлуу. N = M * pⁿ мында N – жазыла турган сан, M – сандын мантисасы , p – негиз (берилген сандын санауу системасынын негизине барабар), n (бүтүн) – тартип (даража) , оң жана терс болушу мүмкүн), n даражасына p - мүнөздүү сандар (көрсөткүч, б.а. даражага (тартипке) көтөрүлгөн база). Маанилүү нюанс. Эгерде ондук сандын бүтүн бөлүгү 0дөн башкача болсо , көрсөткүчтүн тартиби (даражасы) оң , бүтүн бөлүгү 0гө барабар болсо , көрсөткүчтүн даражасы терс болот . 3.2 Сандарды жазуунун нормалдуу жана нормалдаштырылган түрү. Сандын нормалдуу формасы — мантиса (белгисин эске албаганда) жарым интервалда [0,1], башкача айтканда, 0 <= M < 1 жайгашкан форма. Жазуунун бул формасы кемчorги : кээ бир сандар эки ача жазылат (мисалы, 0,0001 0,000001*10², 0,00001⋅10¹, 0,0001⋅10º, 0,001⋅10ˉ¹ ж.б. түрүндө жазылышы мүмкүн). Ошондуктан, жазуунун дагы бир түрү (өзгөчө информатикада) кеңири таралган - нормалдаштырылган, мында ондук сандын мантисасы 1ден (кошкондо) 10го (эксклюзив) чейинки маанилерди алат, башкача айтканда, 1 <= M < 10 (ошондой эле экorк сандын мантисасы 1ден 2ге чейинки маанилерди алат. ). Башка сөз менен айтканда, ондук системадагы мантиса 1,0дон (кошкондо) 10го (эксклюзив) чейин бөлчөк сан болушу керек , б.а. мантиссанын бүтүн бөлүгү бир цифраны камтышы керек, ал эми бөлчөк бөлүгү математикалык жактан чектелбейт. Нормалдаштырылган форманын артыкчылыгы , ошентип, каалаган сан (0ден башка) уникалдуу түрдө жазылат. Кемчorги 0ду бул формада көрсөтүү мүмкүн эмес, ошондуктан информатикада сандарды көрсөтүү 0 саны үчүн атайын белгини (бит) берет.3.3 Ондук сандарды экспоненциалдык нормалдаштырылган формада жазуу мисалдары. Келгиле, мисалдарды карап көрөлү. Мисал 1. 1015000 (бир миллион он беш миң) ондук санын экспоненциалдык нормалдаштырылган түрдө жазалы . Бул сан үчүн санауу системасы ондук, ошондуктан негизи 10 болот . Келгиле манты тандайлы . Бул үчүн, санды бөлчөк катары элестетиңиз, анын бөлчөк бөлүгү нөлгө барабар болот (сан бүтүн сан болгондуктан): 1000000.0. Эгерде сандын бүтүн бөлүгү 0дөн чоң болсо , анда бүтүн санда бир гана цифра калмайынча чекитти баштапкы абалынын сол жагына (бүтүн бөлүктүн ичинде) жылдырыңыз . Андан кийин мезгилди койдук. Маанисиз нөлдөрдү таштайбыз (сандын аягында). 1.015ке барабар сандын мантисасын алабыз . Сандын негизинин даражасын (тартибин) аныктайлы . Бүтүн жана бөлчөк бөлүктөрүн бөлүп турган чекитибиз солго канча позицияга жылды? Алты орун үчүн. Бул буйрук 6 болот дегенди билдирет . Бул учурда, тартип оң болот (биз 0гө барабар эмес сандын бүтүн бөлүгүндөгү чекитти жылдырдык). Нормалдаштырылган түрдө акыркы жазуу: 1.015 * 10⁶ . Бул санды төмөнкү формада жаза алабыз: 1.015E6 (мында E6 ондук сандын көрсөткүчү , башкача айтканда, 10дон 6-даңгээлге чейин). Келгиле, өзүбүздү сынап көрөлү . Сан үчүн экспоненциалдык белгилер бир сандын (мантисса) жана башка сандын (көрсөткүчтүн) көбөйтүлүшүнөн башка эч нерсе эмес. 1,015ти 10⁶ге көбөйтсөңүз эмне болот? 1,015*10⁶ = 1,015*1000000 = 1015000 . Баардыгы туура. Бул ыкма (нормалаштырылган) бир түшүнүктүү жазуу түзүүгө жардам берет жогоруда көрсөтүлгөндөй экспоненциалдык формадагы сандар. Мисал 2. Ондук 0,0098 чыныгы санын нормалдаштырылган түрдө жазалы . Сандын негизин баса белгилейли – ал 10го барабар (ондук сан системасы). Сандын мантисин тандайлы - ал 9,8ге барабар (сандын бүтүн бөлүгү нөлгө барабар, бул чекитти оңго биринчи маанилүү цифрага жылдырабыз (1ден 9га чейинки диапазондо)) Сандын тартибин аныктайбыз - чекитти үч позицияга жылдырдык, бул ирет 3 дегенди билдирет . Оң деген терспи же терспи? Биз чекитти оңго жылдыргандыктан (сандын бөлчөк бөлүгүндө), тартиби (кубат) терс болот . Нормалдаштырылган формадагы сандын акыркы жазуусу 9,8 * 10ˉ³ же 9,8E-3 . Келгиле, өзүбүздү дагы текшерип көрөлү. 9,8ди 10ˉ³ге көбөйтөбүз. 9,8 * 10ˉ³ = 9,8 * 0,001 = 0,0098 туура. Мисал 3. Ондук накта 3,56 санын нормалдаштырылган формада жазалы.Сандын негизин тандаңыз - ал 10го барабар (ондук санауу системасы).Сандын мантисасын тандаңыз - ал... 3,56 (бүтүн сан) сандын бир бөлүгү бир орундуу, 0гө барабар эмес. Бул чекитти эч жакка жылдыруунун кажети жок, сандын өзү манты болот дегенди билдирет.) Негиздин тартибин бөлүп көрөлү: Мантиса кайсы сан менен болушу керек , сандын өзүнө барабар, ал өзгөрбөшү үчүн көбөйтүлсүнбү? Бирдигине. Бул тартип нөл болот дегенди билдирет. Нормалдаштырылган формадагы сандын акыркы жазуусу 3.56 * 10º же 3.56E0. 4. Компьютердин эсинде реалдуу сандарды сактоо: float жана double. 4.1 Float жана double түрлөрү. Лекциябыздын негизги бөлүгүнө өтөбүз. Бизге белгилүү болгондой, Javaда чыныгы сандардын эки түрү бар: float жана double . Float түрү компьютердин эс тутумунда 32 битти ээлейт жана [3.4E-38; 3.4E+38) (башкача айтканда, 3.4*10ˉ³⁸ден (кошкондо) 3.4*10³⁸ге (кошпогондо) чейинки диапазондо). Маанилүү нюанс 1. Float сандары оң же терс болушу мүмкүн. Жогорудагы бул диапазон калкыма диапазонго кирген сандардын модулдарын көрсөтүү үчүн берилген. Маанилүү нюанс 2. 10³⁸ болжол менен 2¹²⁷ га барабар , тиешелүүлүгүнө жараша 10 ˉ³⁸ болжол менен 2ˉ¹²⁷ га барабар . Ошентип, калкыма сандардын абсолюттук маанилеринин аралыгын [3.4 * 2ˉ¹²⁷ катары жазууга болот; 3,4 * 2¹²⁷). Кош типтеги компьютер эки эсе көп эстутумду ээлейт -64 бит жана [-1.7E+308 диапазонундагы ондук маанилерди кабыл алат ; 1.7E+308) тиешелүүлүгүнө жараша. 4.2 Экorк сандардын экспоненциалдык нормалдаштырылган түрү. Сандар компьютердин эс тутумунда экorк формада сакталаарын билебиз. Ошентип, 1560.256 санын (флоат түрү) алып , аны экorк системага позициялык формада айландыралы: 11000011000.01000001100 . Бул компьютердин эсинде сакталат деп ойлошуңар мүмкүн. Бирок бул андай эмес! Компьютердин эс тутумунда флот жана кош типтер ( чыныгы калкыма чекиттүү типтер ) экспоненциалдык нормалдаштырылган формада сакталат , бирок кубаттуулуктун негизи 10дун ордуна 2. Бул жогоруда айтылгандай, бардык маалыматтар компьютер экorк түрдө берилген (бит). Номер үчүн компьютердин эстутумунун белгилүү көлөмү бөлүнгөн. 15,2 оң санын нормалдаштырылган экспоненциалдык түрдө көрсөтөлү : 1,52*10¹ . Андан кийин, келгиле, анын бинардык "эгизи" 1111.00110011001ди экспоненциалдык нормалдаштырылган белгилер менен да ошол эле алгоритм менен көрсөтөлү: 1) Негизги 2ге барабар болот 2) Мантисса 1.11100110011001ге барабар болот 3) Даражасы оң жана 3кө барабар болот. (чекит 3 бит солго жылдырылат) ондук системада. Аны бинардык системага өткөрөлү: 11 . Ошентип, бинардык экспоненциалдык нормалдаштырылган түрдө 1,11100110011001 * 2¹¹ болот . 4.3 Калкыма сандын экспоненциалдык нормаланган экorк формасын компьютердин эсинде сактоо. Ошентип, биз реалдуу сан компьютердин эсинде экспоненциалдык нормалдаштырылган экorк формада сакталаарын түшүндүк . Ал эс-тутумда кандай көрүнөт? Келгиле, флоат түрүн алалы . Компьютер ар бир float саны үчүн 32 бит бөлүп берет . Алар төмөнкүдөй бөлүштүрүлөт . Бул көрсөткүч схемалык түрдө компьютерде 32-бит флот саны үчүн бөлүнгөн эстутумду көрсөтөт. ОКУБА :))) Компьютердин эсиндеги реалдуу сандар.  ӨНҮКТҮРҮҮДӨ!!!  - 5 Бит номерлөө кызыл менен көрсөтүлгөн . Жашыл сандын белгисин сактоо үчүн бөлүнгөн эстутумдун бөлүгүн (1 бит) көрсөтөт. Сары сандын экспоненциалдык түрүнүн (8 бит) жылган күчүн (тартибин) сактоо үчүн бөлүнгөн эстутумдун бөлүгүн көрсөтөт. Көкжашыруун бирдиги (23 бит) жок сандын нормалдаштырылган мантиссасын сактоо үчүн бөлүнгөн эс тутумдун бөлүгүн билдирет. Келгиле, жакыныраак карап көрөлү. 1) Sign bit. Эң маанилүү (солдон биринчи) бит дайыма сандын белгисин сактоо үчүн бөлүнөт (эгер сан терс болсо 1, ал эми оң болсо 0). Өзгөчө нөл саны болушу мүмкүн - программалоодо нөл терс да, оң да болушу мүмкүн . 2) Андан кийин 2 негизи бар көрсөткүчтүн даражасынын (тартибинин) биттери келет . Бул үчүн 8 бит бөлүнгөн. Бизге белгилүү болгондой, калкыма сандардын көрсөткүч даражасы терс да (бүтүн бөлүгү 0 болгон сандар үчүн, 3.3-пунктту караңыз) жана оң (бүтүн бөлүгү нөлдөн айырмаланган сандар үчүн) болушу мүмкүн жана 2ˉ¹²⁷ден 2¹²⁷ге чейин диапазондо болушу мүмкүн . Теориялык жактан алганда, көрсөткүчтүн белгисин аныктоо үчүн белги битинде болгондой, бир битти бөлүп алышыбыз керек. Бирок бул андай эмес. Көрсөткүчтүн белгисин аныктоодо бир аз коротпоо үчүн, float сандары жарым byte +127 (0111 1111) көрсөткүчүнө офсетти кошот . Ошентип, 2ˉ¹²⁷ден 2¹²⁷ге чейинки ыйгарым укуктардын диапазонунун ордуна, компьютер 0дөн +254кө чейинки ыйгарым укуктардын диапазонун сактайт - бардык кубаттуулук маанилери оң , белгиге кошумча byte коротуунун кереги жок. Көрсө, көрсөткүчтүн мааниси мүмкүн болгон мааниге салыштырмалуу жарымга жылдырылат . Бул көрсөткүчтүн чыныгы маанисин алуу үчүн, эстутумда сакталган мааниден бул офсетти алып салуу керек дегенди билдирет. Эгерде эстутумда сакталган көрсөткүчтүн мааниси жылышуудан (+127) аз болсо, анда көрсөткүч терс болот: бул логикалык. Мисал. Терс даражадагы жылышты аткаралы -18 . Ага +127 офсетти кошуп, +108 даражасынын маанисин алабыз (эсептөөдө 0 даражасын унутпаңыз). Даражаны экorк формага айландыралы: 1101100 Бирок даража үчүн 8 бит эстутум бөлүнгөн, бул жерден биз 7 биттик санды алабыз. Бош, бош эмес жогорку цифранын (бит) ордуна компьютер 0 кошот. Натыйжада бул даража компьютердин эсинде 01101100 катары сакталат . Карап көрөлү: +108 < +127, бул даража чындыгында терс экенин билдирет. Төмөнкү кызыктуу tableны карап көрөлү: Бул экorк жана ондук системалардагы калкып чыгуучу сандардын нормалдаштырылган түрлөрүнүн ыйгарым укуктарынын бардык мүмкүн болгон маанилерин көрсөтөт. Көрүнүп тургандай, бинардык системада +127 бүтүндөй byteтын жарымын түзөт (8 бит). 3) Калган 23 бит мантиса үчүн сакталган ОКУБА :))) Компьютердин эсиндеги реалдуу сандар.  ӨНҮКТҮРҮҮДӨ!!!  - он бир. Бирок нормалдаштырылган бинардык мантисса үчүн эң маанилүү бит (башкача айтканда нормалдаштырылган мантиссанын бүтүн бөлүгү) ар дайым 1ге барабар ( жашыруун бир деп аталат ), анткени мантиссанын саны 1<=M<2 (жана) диапазондо жайгашкан. ошондой эле лекциянын 2.1.1-пунктун эске салалы). Бир гана 0 саны бөтөнчө. Бөлүнгөн 23 битке бирдик жазуунун жана эстутумду бошко кетирүүнүн эч кандай мааниси жок, ошондуктан мантиссанын калган бөлүгү (анын бөлчөк бөлүгү) бөлүнгөн 23 битке жазылат. Көрсө, флоат санынын олуттуу бөлүгүнүн узундугу 24, анын ичинен бир азыраак бит сакталат. Маанилүү нюанс. Ондук бөлчөк сандарды экorк сандарга айландырганда экorк системадагы бөлчөк бөлүгү көбүнчө чоң болуп чыкканын эстейли. Ал эми калкып чыгуучу номерди сактоо үчүн бизде болгону 32 бит бар. Бул учурда, экorк бөлчөктүн эң төмөнкү, эң аз маанилүү цифралары (ушул лекциянын 2.1.2-пунктунда эсиңизде болсун) бөлүнгөн эс тутумга киргизилбейт жана компьютер аларды этибарга алbyte . Сандын тактыгы жоголот , бирок, көрүп турасыз, бул минималдуу. Башка сөз менен айтканда, бөлчөк калкыма тактыгы 6-7 ондук орун болуп саналат . 4.4 Эки эселенген сандын экспоненциалдык нормалдаштырылган бинардык формасын компьютердин эсинде сактоо. Double тибиндеги реалдуу сандар, кээ бир мүнөздөмөлөрдү кошпогондо, флот сандары сыяктуу эле компьютердин эсинде сакталат . Кош сандын компьютер эсинде 64 бит бар. Алар төмөндөгүдөй бөлүштүрүлөт (ошондой эле солдон оңго карай тартипте): 1) Белги бит (4.3-пунктту караңыз). Бул биттин саны 63 болорун түшүнөбүз . 2) Даража (орден). Кош сандар аны сактоо үчүн 11 бит бөлүнөт . Даражалык жылдыруу да жүргүзүлөт , бирок кош сандар үчүн ал +1023кө барабар болот . 3) мантисса (маанилүү бөлүгү). Кош сандар аны сактоо үчүн 52 бит (цифр) бөлүнөт . Ошондой эле, мантиссанын так бүтүн бөлүгү ( жашыруун бирдиги ) эстутумда сакталbyte . Бөлчөктүк эки эселердин тактыгы болжол менен 16 ондук орун экенин белгилей кетүү керек . 4.5 Компьютердин эсинде ондук системанын реалдуу санын көрсөтүү мисалдары. Ал эми биздин лекциянын жыйынтыктоочу пункту теманы түшүнүүнү бекемдөө үчүн ондук сан системасынын бөлчөк санын анын компьютердин эсинде сактоо формасына которуунун мисалы болот. Мисал 1. Санды ал-4,25 сүзүүчү түрү. Келгиле, бул лекцияда өткөндөрдүн бардыгын эстеп, экorк санауу системасында экспоненциалдык нормалдаштырылган формада берели. 1) Сандын бүтүн бөлүгүн экorк түргө айландырыңыз : 4/2 = 2 ( 0 бөлүүнүн калдыгы ) 2/2 = 1 ( 0 бөлүүнүн калдыгы ) Бүтүн сан бөлүгү экorк системада 100гө барабар болот . 2) Сандын бөлчөк бөлүгүн экorк формага айландырыңыз . 0,25*2 = 0,5 ( 0 ) 0,5*2 = 1,0 ( 1 ) Бөлчөк бөлүгү бинардык системада 0,01ге барабар болот . 3) Ошентип, -4,25₁₀ = -100,01₂ . 4) -100,01₂ санын экorк санауу системасында экспоненциалдык нормалдаштырылган түргө айландыралы (бул даражанын негизи 2 болот). -100,01₂ = -1,0001 *2² Келгиле, даражанын маанисин ондук форматтан экorк форматка которолу . 2/2= 1 ( 0 калды ) Даражасы 10₂. Анын экorк экспоненциалдык нормалдаштырылган түрүндөгү -4,25₁₀ саны -1,0001 * 2¹º ге барабар экенин түшүнөбүз, анын компьютердин эс тутумунда кандайча көрүнөөрүн жазып көрөлү . Белги бит 1 (терс сан) болот . Көрсөткүчтүн жылышуусу 2+127 = 129₁₀ = 10000001₂ Мантисадан жашырылганды алып салабыз , биз 00010000000000000000000 алабыз ( эбегейсиз төмөнкү нөлдөрдүн биттерин толтурабыз ). Төмөнкү сызык. 1 10000001 00010000000000000000000 - компьютердин эсинде -4,25 саны ушундайча сакталат. Мисал 2. 0,75₁₀ калкыма санын компьютердин эс тутумунда экorк сактагыч форматына айландырыңыз . Натыйжа 0 01111110 10000000000000000000000 болушу керек . Көңүл бурганыңыздарга рахмат.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION