JavaRush /Java blogi /Random-UZ /Kompyuter xotirasidagi haqiqiy sonlar. Tushuntirish.
Marianna
Daraja
Москва

Kompyuter xotirasidagi haqiqiy sonlar. Tushuntirish.

Guruhda nashr etilgan
Hayrli kun! Birinchi kvestning "Haqiqiy sonlar bilan ishlash nuanslari" ma'ruzasi (2-bo'lim. O'zgaruvchan nuqtali sonlarning tuzilishi) va mavzu bo'yicha qo'shimcha ma'ruzalarni o'rganayotganda, ko'pchilik ushbu mavzu bo'yicha ko'plab savollarga duch kelgan bo'lishi kerak. Dastlab, men o'zimga kerakli javoblarni berishga harakat qildim va endi ularni izchil mantiqiy tartibda to'liq tushunishga yordam berish uchun sizga taklif qilaman. 1. O‘nlik va ikkilik sanoq sistemalari. 1.1 O'nli sanoq tizimi eng keng tarqalgan tizimlardan biri bo'lib, biz maktabda, universitetda va hayotda kompyuterdan tashqari matematik hisob-kitoblar uchun foydalanamiz. Unda 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 (arabcha) raqamlari - jami 10 ta raqamdan foydalaniladi . Raqamlar uchun Rim yozuvi ham mavjud, ammo hozir u deyarli ishlatilmaydi. O'nlik sanoq sistemasida sanash birlik, o'nlik, yuzlik, minglik, o'n minglik, yuz minglik, millionlik va hokazolarda amalga oshiriladi. - boshqacha qilib aytganda, bu raqamning barcha raqamlari. Raqamning raqami - bu raqamning raqam yozuvidagi o'rni (joyi). Natural sonlarning eng past raqami (va eng muhimi ) birliklar raqamidir (eng o'ng tomonda). Nega u eng ahamiyatsiz? Chunki raqamning birlik raqamini tushirish orqali raqamning o'zi minimal darajada o'zgaradi (masalan, 345 va 340 raqamlari). Keyinchalik, ikkinchi raqam o'nlab raqam va boshqalar. Bularning barchasi nimani anglatadi? O'nlik sanoq sistemasidagi istalgan butun sonni olib, uni raqamlarga ajratamiz . 3297 = 3*1000 + 2*100 + 9*10 + 7 Shunday qilib, 3297 raqamida toʻrtinchi raqamning 3 birligi (yaʼni 3 ming), uchinchi raqamning 2 birligi (2 yuzlik), 9 borligini aniqlaymiz. ikkinchi raqamning birligi (9 o'nlik) va birinchi raqamning 7 birligi . Boshqacha qilib aytganda, bu raqam uch ming ikki yuz to'qson yetti va shunga ko'ra, pozitsion . Kasr (haqiqiy) raqamlarning raqamlari haqida nima deyish mumkin ? Kasr sonlarining raqamlari (ularning kasr qismi) deyiladi: o'ndan, yuzdan, mingdan, o'ndan mingdan va boshqalar. Raqam o'nli kasrdan (sonning butun qismidan) qanchalik uzoq bo'lsa, u shunchalik ahamiyatsiz bo'ladi (uni tashlab yuborsangiz, raqamning qiymati ozgina o'zgaradi). Masalan, o'nlik kasr sifatida berilgan har qanday kasr sonni olaylik: 25,076 = 2*10 + 5 +0*0,1 + 7*0,01 +6*0,001 Shunday qilib, biz 25.076 kasr sonida 2 o'nlik, 5 birlik, 0 o'ndan iborat ekanligini aniqlaymiz. , 7 yuzinchi va 6 minginchi. O'nlik sistemada 10 ta raqam va 10 ta joyning ko'paytmasi qo'llaniladi - shuning uchun "o'nlik" nomi. 1.2 Ikkilik sanoq sistemasi deyarli barcha zamonaviy kompyuterlarda va boshqa hisoblash elektron qurilmalarida qoʻllaniladigan sanoq sistemasidir. Raqamlarni yozish uchun u faqat ikkita raqamdan foydalanadi - 0 va 1. Raqam qaysi sanoq tizimida yozilganligini chalkashtirib yubormaslik uchun uning pastki o'ng qismida ko'rsatkich (u sanoq tizimining asosi ) bilan ta'minlangan. misol: 1000₁₀ 1000₂ Bu yerda birinchi raqam oʻnlik sanoq sistemasida tanish minglik , quyida esa ikkilik sistema tasviridagi son boʻlib, oʻnlik sanoq sistemasida teng... 8 ! O'nlik tizim singari, ikkilik tizim ham raqamlarni raqamlarga ajratadi . Ikkilik sondagi har bir raqam bit (yoki raqam ) deb ataladi. (Agar kimdir qiziqsa, to'rt bit - nibble (yoki tetrad), 8 bit - bayt , 16 bit - so'z , 32 bit - qo'sh so'z ). Bitlar (raqamlar) ham noldan boshlab o'ngdan chapga raqamlanadi (o'nlik tizimdan farqli o'laroq). Eng kam ahamiyatli, ahamiyatsiz, o'ng bit 0 ga teng tartib raqamiga ega . Keyin birinchi bit keladi , ikkinchisi va boshqalar, bit qanchalik katta bo'lsa , shunchalik ahamiyatli bo'ladi (biz o'nlik tizimga o'xshab tushunamiz - agar siz 1455 raqamidan bittasini olib tashlasangiz, sizda 1450 raqami qoladi. - boshlang'ichga deyarli teng.Ammo yuzliklarni olib tashlasangiz, sizda 1050 raqami qoladi, bu allaqachon boshlang'ich qiymatdan uzoqdir, chunki yuzlar o'rinlari birliklar o'rniga qaraganda ancha muhimroqdir (yuqori tartibli). ). Misol. HALI O'QIMAN :))) Kompyuter xotirasidagi haqiqiy raqamlar.  ISHLAB CHIQISHDA!!!  - 2 Pastki qismida bu kasr ikkilik sonning bitlari qizil rang bilan raqamlangan - jami bizda bu raqamning 18 biti (raqamlari) mavjud. Oldinga qarab, shuni ta'kidlashni istardimki, kasr raqamlari kompyuter xotirasida butunlay boshqacha tarzda saqlanadi - bu haqda keyinroq muhokama qilinadi. Shu bilan birga, keling, raqamlarni bir sanoq sistemasidan ikkinchisiga o‘tkazishni o‘rganamiz. 2. Butun va kasrlarni o‘nlik sanoq sistemasidan ikkilik sistemaga va aksincha o‘tkazish. 2.1 O‘nlik sanoqdan ikkilik sanoq sistemasiga o‘tkazish. 2.1.1 Butun sonlar. Butun o'nli sonni ikkilik sanoq tizimiga o'tkazish uchun siz ushbu sonni 2 ga bo'lishingiz, bo'linishning qolgan qismini yozishingiz kerak (sonning juft yoki toq bo'lishiga qarab har doim 0 yoki 1 ga teng). , va bo'linish natijasini yana 2 ga bo'ling, bo'linishning qolgan qismini yana yozing (0 yoki 1) va ikkinchi bo'linishdan olingan natijani yana 2 ga bo'ling.Bo'linish natijasi bittaga teng bo'lguncha shu tarzda davom eting. Keyinchalik, biz barcha nollarni va birlarni teskari tartibda yozamiz , eng so'nggi bo'linish natijasidan boshlab, har doim 1 ga teng. Muhim eslatma. HAR QANDAY INTEGERni 2 ga ketma-ket bo'lishning yakuniy natijasi har doim bitta (1) ga teng bo'ladi! Agar natija 1 dan katta bo'lsa, natijada bitta olinmaguncha bu natijani 2 ga bo'lishda davom etamiz. Va 2 ga bo'linish natijasi faqat bitta holatda nol (0) bo'lishi mumkin - bu nolning o'zini 2 ga bo'lishdir. Misol. 145 sonini o‘nlik sistemadan ikkilik sanoq sistemasiga o‘tkazamiz . 145/2 = 72 (qolgan 1 ) 72/2 = 36 (qolgan 0 ) 36/2 = 18 (qolgan 0 ) 18/2 = 9 (qolgan 0 ) 9/2 = 4 (qolgan 1 ) 4/2 = 2 (qolgan 0 ) 2/2 = 1 (qolgan 0 ) Endi biz ikkilik raqamimizni teskari tartibda "yig'amiz". Biz 10010001 raqamini olamiz . Bajarildi! Qiziqarli nuance 1. 1-sonni o'nlik sistemadan ikkilik sistemaga aylantiramiz . Ikkilik tizimda bu raqam 1 sifatida ham yoziladi.Axir , 1 ga teng bo'lishi kerak bo'lgan 2 ga bo'linishning yakuniy natijasi allaqachon 1 raqamining o'ziga teng 1₁₀ = 1₂ Qiziqarli nuance 2. Keling, aylantiramiz. o'nlik sistemadan ikkilik sistemaga 0 raqami . Ikkilik tizimda bu raqam 0 shaklida ham yoziladi. 0₁₀ = 0₂ 2.1.2 Kasr sonlar. Kasr sonlarni ikkilik songa qanday o'tkazish mumkin? O'nli kasrni ikkilik sanoq tizimiga o'tkazish uchun quyidagilar kerak: a) kasrning butun qismini 2.1.1-bandda o'rganilgan algoritmga muvofiq ikkilik kasrga aylantirish b) kasrning kasr qismini 2 ga ko'paytirish , yozish kerak . o'nli kasrdan oldingi natijaning natija raqami (har doim 0 yoki 1 ga teng, bu mantiqiy), so'ngra FAQAT olingan natijaning kasr qismini yana 2 ga ko'paytiring, natijaning hosil bo'lgan raqamini o'nli kasrdan (0 yoki 1) OLDINI yozing va kasr bo'lguncha davom eting. ko'paytirish natijasining bir qismi 0 ga teng bo'ladi yoki o'nli kasrlarning kerakli soniga qadar (kerakli aniqlik ) (2 ga ko'paytirish soniga teng). Keyin haqiqiy (kasr) sonning butun va kasr qismlarini ajratib turadigan nuqtadan keyin TARTIB bo'yicha yozilgan nollar va birlarning hosil bo'lgan ketma-ketligini yozishingiz kerak . 1-misol. 2,25 (2 ball 25 yuzdan bir) sonini o’nlik sanoq sistemasidan ikkilik sistemaga aylantiramiz . Ikkilik tizimda kasr 10,01 ga teng bo'ladi . Biz buni qanday oldik? Raqam butun qismdan iborat (nuqtagacha) - bu 2 va kasr qism - bu 0,25. 1) Butun qismning tarjimasi: 2/2 = 1 (qolgan 0 ) Butun qism 10 bo'ladi . 2) Kasr qismining tarjimasi. 0,25 * 2 = 0 ,5 (0) 0,5 * 2 = 1 ,0 (1) 2 ga ketma-ket ko'paytirish natijasida kasr qismi 0 ga teng bo'ldi. Ko'paytirishni to'xtatamiz. Endi biz kasr qismini TARTIBIDA "yig'amiz" - biz ikkilik tizimda 0,01 ni olamiz. 3) Butun va kasr qismlarini qo'shing - biz 2.25 o'nlik kasr ikkilik kasr 10.01 ga teng bo'lishini olamiz . 2-misol. 0,116 sonni o’nlik sanoq sistemasidan ikkilik sistemaga aylantiramiz . 0,116 * 2 = 0,232 (0) 0,232 * 2 = 0,464 (0) 0,464 * 2 = 0,928 (0) 0,928 * 2 = 1,856 (1) //bu natijaning butun qismini olib tashlang 0,856 * 1 = 2 . ) //bu natijaning butun qismini olib tashlang 0.712 * 2 = 1 .424 (1) //bu natijaning butun qismini tashlang 0.424 * 2 = 0 .848 (0) Koʻrib turganimizdek, koʻpaytirish davom etadi va davom etadi. , natijaning kasr qismi 0 ga teng bo'lmaydi. Keyin biz o'nli kasrimizni nuqtadan keyin (kasr qismida) 7 kasr (bit) aniqlik bilan ikkilik kasrga aylantiramiz deb qaror qilamiz. Biz ahamiyatsiz bitlar haqida nimani o'rganganimizni eslaylik - bit (bit) butun qismdan qanchalik uzoq bo'lsa, biz uni e'tiborsiz qoldirishimiz osonroq bo'ladi (ma'ruzaning 1-bo'limidagi tushuntirish, kim unutgan). Biz nuqtadan keyin 7 bit aniqlik bilan 0,0001110 ikkilik kasrni olamiz . 2.2 Ikkilik sanoqdan o‘nlik sanoq sistemasiga o‘tkazish. 2.2.1 Butun sonlar. To'liq tarjima qilish uchunsonni ikkilik sanoq sistemasidan oʻnlik kasrga oʻtkazish uchun bu sonni raqamlarga (bitlarga) boʻlish va har bir raqamni (bitni) 2 raqamiga maʼlum musbat darajaga koʻpaytirish kerak (bu daraja eng muhimidan oʻngdan chapga sanashni boshlaydi. (o'ng bit) va 0 dan boshlanadi ). Boshqacha qilib aytganda, ikkitaning kuchi berilgan bitning soniga teng (lekin bu yozilmagan qoida faqat butun sonlarni o'zgartirganda ishlatilishi mumkin , chunki kasr sonlar uchun bitlarni raqamlash tarjima qilingan kasr qismida boshlanadi. o'nlik sistemaga boshqacha ). Keyin olingan mahsulotlarni qo'shishingiz kerak . Misol. 110011 ikkilik sonni o‘nlik sanoq sistemasiga o‘tkazamiz . 110011₂ = 1*2⁵ + 1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º = 32 +16 +0 + 0 + 2 + 1 = 51₁₀ Natijada, biz 51 raqamini olamiz . ikkilik tizim. Ma'lumot uchun, quyida 2 raqamining birinchi kuchlari jadvali keltirilgan . HALI O'QIMAN :))) Kompyuter xotirasidagi haqiqiy raqamlar.  ISHLAB CHIQISHDA!!!  - 5 ! E'tibor bering, raqamning nol darajasi har doim 1 ga teng. 2.2.2 Kasr sonlar. Ikkilik kasr (haqiqiy) sonni o'nlik kasrga aylantirish uchun siz: a) 2.2.1-banddagi algoritmga muvofiq uning butun qismini o'nli kasrga aylantirishingiz kerak ; b) uning kasr qismini quyidagicha tarjima qiling. Kasr qismini ma'lum bir manfiy kuchga ko'tarilgan ikkita raqamlarning ko'paytmalari yig'indisi sifatida ko'rsatish kerak ( nuqtadan keyingi birinchi raqam uchun quvvat (kasrning butun qismidan keyin) -1 ga teng bo'ladi, nuqtadan keyingi ikkinchi raqam uchun -2 ga teng bo'ladi va hokazo.) Natijada bu miqdor o'nli kasr tizimidagi sonning kasr qismi bo'ladi. Misol. 10111.01 sonini ikkilik sistemaga aylantiramiz . 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₁₀ Natijada o'nlik sanoq sistemasida 23,25 sonini olamiz. 2 ning birinchi salbiy kuchlari jadvali quyida keltirilgan. 2.2.3 Sonlarni ikkilik sistemadan o‘nlik sistemaga o‘tkazishning umumiy formulasi. Raqamlarni ikkilik sistemadan o‘nlik sistemaga (ham butun, ham kasr qismlarga) o‘tkazishning umumiy formulasini keltiramiz. bu yerda A - ikkilik sanoq sistemasidagi son; Sanoq sistemasining asosi 2 ga teng (maʼnosi, har bir bit 2 ga koʻpaytiriladi); nHALI O'QIMAN :))) Kompyuter xotirasidagi haqiqiy raqamlar.  ISHLAB CHIQISHDA!!!  - 7 HALI O'QIMAN :))) Kompyuter xotirasidagi haqiqiy raqamlar.  ISHLAB CHIQISHDA!!!  - 4— butun sonlar soni (bitlar) ; m - sonning kasr raqamlari (bitlari) soni . Ajratish nuqtasidan butun sonning birinchi biti qizil rang bilan ta'kidlangan. U har doim 2 ga nol kuchga ko'paytiriladi. Undan oldingi keyingi bit (chapda) birinchi darajaga 2 ga ko'paytiriladi va hokazo. Ajratish nuqtasidan kasr qismining birinchi biti yashil rang bilan ta'kidlangan. U har doim minus birinchi darajaga 2 ga ko'paytiriladi. O'ngdagi keyingi bit 2 ga minus ikkinchi darajaga ko'paytiriladi va hokazo. 3. Ilmiy belgilar: ikkala tizimda ham normalangan belgi. Mantis, ko'rsatkich, daraja darajasi. 3.1 Sonni yozishning eksponensial shakli. Ilgari biz pozitsion raqamlarni raqam bo'yicha yozishning batafsil sxemasini o'rganib chiqdik . Keling, 0.0000000000000000000016 raqamini olaylik . Standart shaklda juda uzun yozuvga ega . Eksponensial shaklda esa u quyidagicha ko'rinadi: 1,6 * 10ˉ²¹ Xo'sh, sonning eksponensial shakli nima va sonni bu shaklda qanday ifodalash kerak? Raqamning ilmiy belgisi haqiqiy sonlarning mantis va ko'rsatkich sifatida ko'rinishidir . Juda katta va juda kichik raqamlarni ifodalash, shuningdek, ularning yozuvlarini birlashtirish uchun qulay. N = M * pⁿ bu erda N - yoziladigan son, M - sonning mantisasi , p - asos (berilgan sonning sanoq tizimining asosiga teng), n (butun) - tartib (daraja). , musbat va salbiy bo'lishi mumkin), n kuchiga p - xarakterli sonlar (eksponent, ya'ni quvvatga (tartibga) ko'tarilgan baza). Muhim nuance. Agar o'nlik sonning butun qismi 0 dan farq qilsa , ko'rsatkichning tartibi (darajasi) musbat bo'ladi , agar butun qism 0 ga teng bo'lsa , daraja darajasi salbiy bo'ladi . 3.2 Sonlarni yozishning normal va normalangan shakli. Sonning normal shakli mantis (belgini hisobga olmagan holda) yarim oraliqda [0,1] joylashgan, yaʼni 0 <= M < 1. Bu yozuv shakliga ega. kamchilik : ba'zi raqamlar noaniq yoziladi (masalan, 0,0001 ni 0,000001*10², 0,00001⋅10¹, 0,0001⋅10º, 0,001⋅10ˉ¹ va boshqalar sifatida yozish mumkin). Shuning uchun, ro'yxatga olishning yana bir shakli keng tarqalgan (ayniqsa, informatikada) - normallashtirilgan, bunda o'nlik sonning mantisasi 1 dan (shu jumladan) 10 (eksklyuziv) gacha bo'lgan qiymatlarni oladi, ya'ni 1 <= M < 10 (xuddi shunday, ikkilik sonning mantisasi 1 dan 2 gacha qiymatlarni oladi) ). Boshqacha qilib aytganda, o'nlik kasr tizimidagi mantis 1,0 (shu jumladan) dan 10 (eksklyuziv) gacha bo'lgan kasr son bo'lishi kerak , ya'ni. mantisaning butun qismi bitta raqamdan iborat bo'lishi kerak va kasr qismi matematik jihatdan cheklangan emas. Normallashtirilgan shaklning afzalligi shundaki, shuning uchun har qanday raqam (0 dan tashqari) o'ziga xos tarzda yoziladi. Kamchiliklari shundaki, 0 ni bu shaklda ifodalash mumkin emas, shuning uchun informatika fanida raqamlarning tasviri 0 soni uchun maxsus belgi (bit) beradi. 3.3 O'nlik sonlarni eksponensial normalangan shaklda yozishga misollar. Keling, misollarni ko'rib chiqaylik. 1-misol. 1015000 (bir million o'n besh ming) o'nlik sonini ko'rsatkichli normalangan shaklda yozamiz . Bu raqam uchun sanoq tizimi o'nlik, shuning uchun asos 10 bo'ladi . Keling, mantisani tanlaylik . Buning uchun sonni kasr sifatida tasavvur qiling, uning kasr qismi nolga teng bo'ladi (chunki raqam butun son): 1000000.0. Agar raqamning butun qismi 0 dan katta bo'lsa , butun qismda faqat bitta raqam qolmaguncha nuqtani boshlang'ich pozitsiyasining chap tomoniga (butun qismning ichida) o'tkazing . Shundan so'ng biz davr qo'yamiz. Biz ahamiyatsiz nollarni tashlaymiz (raqam oxirida). Biz 1,015 ga teng raqamning mantissini olamiz . Son asosining darajasini (tartibini) aniqlaymiz . Butun va kasr qismlarni ajratuvchi nuqtamiz chapga nechta pozitsiyaga siljigan? Oltita pozitsiya uchun. Bu tartib 6 bo'ladi degan ma'noni anglatadi . Bunday holda, tartib ijobiy bo'ladi (biz nuqtani 0 ga teng bo'lmagan sonning butun qismiga ko'chirdik). Normallashtirilgan shakldagi yakuniy yozuv: 1.015 * 10⁶ . Biz bu raqamni quyidagi shaklda yozishimiz mumkin: 1.015E6 (bu erda E6 o'nlik sonning ko'rsatkichi , ya'ni 10 dan 6 darajagacha). Keling, o'zimizni sinab ko'raylik . Raqamning ko'rsatkichli yozuvi raqam (mantis) va boshqa raqam (ko'rsatkich) ko'paytmasidan boshqa narsa emas. 1,015 ni 10⁶ ga ko'paytirsangiz nima bo'ladi? 1,015*10⁶ = 1,015*1000000 = 1015000 . Hammasi to'g'ri. Ushbu yondashuv (normallashtirilgan) aniq yozuvni yaratishga yordam beradi yuqorida ko'rsatilganidek, eksponensial shakldagi raqamlar. 2-misol. 0,0098 o'nlik haqiqiy sonni normallashtirilgan shaklda yozamiz . Keling, sonning asosini ajratib ko'rsatamiz - u 10 ga teng (o'nlik sanoq tizimi). Raqamning mantissini tanlaymiz - u 9,8 ga teng (raqamning butun qismi nolga teng, ya'ni biz nuqtani o'ngga birinchi muhim raqamga o'tkazamiz (1 dan 9 gacha bo'lgan oraliqda) Raqamning tartibini aniqlaymiz - nuqtani uchta pozitsiyaga ko'chirdik, ya'ni tartib 3. Ijobiy u manfiymi yoki manfiymi? Nuqtani o'ngga (sonning kasr qismida) siljitganimiz uchun tartib (kuch) manfiy bo'ladi .Normallashtirilgan shakldagi raqamning yakuniy yozuvi 9,8 * 10ˉ³ yoki 9,8E-3 . Keling, yana bir bor tekshirib ko'ramiz. 9,8 ni 10ˉ³ ga ko'paytiramiz. 9,8 * 10ˉ³ = 9,8 * 0,001 = 0,0098 . 3-misol.O'nlik haqiqiy son 3,56 ni normallashtirilgan ko'rinishda yozamiz.Raqamning asosini tanlang - u 10 ga teng (o'nlik sanoq sistemasi) Sonning mantisini tanlang - u... 3,56 (butun son) ga teng. sonning bir qismi bitta xonali, 0 ga teng emas. Demak, nuqtani hech qayerga siljitish shart emas, sonning o‘zi mantis bo‘ladi.) Asosning tartibini ajratib ko‘rsatamiz: Mantis qaysi raqam bilan bo‘lishi kerak. , raqamning o'ziga teng, u o'zgarmasligi uchun ko'paytirilsinmi? Birlik uchun. Bu buyurtma nolga teng bo'lishini anglatadi. Normallashtirilgan shakldagi raqamning yakuniy yozuvi 3.56 * 10º yoki 3.56E0. 4. Kompyuter xotirasida haqiqiy sonlarni saqlash: float va double. 4.1 Float va double turlari. Keling, ma'ruzamizning asosiy qismiga o'tamiz. Biz allaqachon bilganimizdek, Java-da haqiqiy sonlarning ikki turi mavjud: float va double . Float turi kompyuter xotirasida 32 bitni egallaydi va [3.4E-38; 3.4E+38) (boshqacha aytganda, 3,4*10ˉ³⁸ (shu jumladan) dan 3,4 * 10³⁸ (tashqari) oralig'ida). Muhim nuance 1. Float raqamlari ijobiy yoki salbiy bo'lishi mumkin. Yuqoridagi ushbu diapazon float diapazoniga kiritilgan raqamlar modullarini ko'rsatish uchun taqdim etilgan. Muhim nuans 2. 10³⁸ taxminan 2¹²⁷ ga teng , mos ravishda 10 ˉ³⁸ taxminan 2ˉ¹²⁷ ga teng . Shunday qilib, float raqamlarining mutlaq qiymatlari oralig'ini [3,4 * 2ˉ¹²⁷ sifatida yozish mumkin; 3,4 * 2¹²⁷). Ikki marta kompyuter xotirasi ikki baravar ko'p joy oladi -64 bit va [-1,7E+308] oralig'ida o'nlik qiymatlarni qabul qilishi mumkin ; 1.7E+308) mos ravishda. 4.2 Ikkilik sonlarning eksponensial normalangan shakli. Biz bilamizki, raqamlar kompyuter xotirasida ikkilik shaklda saqlanadi. Shunday qilib, keling, 1560.256 raqamini (float turi) olamiz va uni pozitsion shaklda ikkilik tizimga aylantiramiz: 11000011000.01000001100 . Bu kompyuter xotirasida shunday saqlanadi deb o'ylashingiz mumkin. Ammo bu unday emas! Kompyuter xotirasida float va double turlari ( haqiqiy suzuvchi nuqta turlari ) eksponensial normallashtirilgan shaklda saqlanadi , lekin quvvatning bazasi 10 o'rniga 2 ga teng. Buning sababi, yuqorida aytib o'tilganidek, barcha ma'lumotlar kompyuter ikkilik shaklda (bitlar) ifodalanadi. Raqam uchun kompyuter xotirasining ma'lum miqdori ajratiladi. 15,2 musbat sonni normallashtirilgan eksponensial shaklda ifodalaymiz : 1,52*10¹ . Keyin, keling, uning ikkilik "egizak" 1111.00110011001 ni ham bir xil algoritmdan foydalanib, eksponentsial normallashtirilgan yozuvda ifodalaymiz : 1) Baza 2 ga teng bo'ladi 2) Mantis 1,11100110011001 ga teng bo'ladi 3) Darajasi musbat va 3 ga teng bo'ladi. (nuqta 3 bit chapga siljiydi) o'nlik sistemada. Uni ikkilik sistemaga aylantiramiz: 11 . Shunday qilib, ikkilik eksponensial normallashtirilgan shaklda u 1,11100110011001 * 2¹¹ bo'ladi . 4.3 Float sonning eksponensial normalangan ikkilik shaklini kompyuter xotirasida saqlash. Shunday qilib, biz haqiqiy son kompyuter xotirasida eksponensial normallashtirilgan ikkilik shaklda saqlanishini aniqladik . Xotirada qanday ko'rinadi? Keling, float turini olaylik . Kompyuter har bir float raqami uchun 32 bit ajratadi . Ular quyidagicha taqsimlanadi . Ushbu rasmda kompyuterda 32 bitli float raqami uchun ajratilgan xotira sxematik ko'rsatilgan. HALI O'QIMAN :))) Kompyuter xotirasidagi haqiqiy raqamlar.  ISHLAB CHIQISHDA!!!  - 5 Bit raqamlash qizil rangda ko'rsatilgan . Yashil rang raqam belgisini saqlash uchun ajratilgan xotira qismini (1 bit) bildiradi. Sariq raqamning eksponent shaklining o'zgartirilgan quvvatini (tartibini) saqlash uchun ajratilgan xotira qismini bildiradi (8 bit). Moviynoaniq birliksiz (23 bit) raqamning normallashtirilgan mantissini saqlash uchun ajratilgan xotira qismini bildiradi. Keling, batafsil ko'rib chiqaylik. 1) Sign bit. Eng muhim (chapdan birinchi) bit har doim raqamning belgisini saqlash uchun ajratiladi (agar raqam manfiy bo'lsa 1 va ijobiy bo'lsa 0). Istisno dasturlashda nol soni bo'lishi mumkin, nol ham salbiy, ham ijobiy bo'lishi mumkin . 2) Keyinchalik asosi 2 bo'lgan ko'rsatkichning daraja (tartibi) bitlari keladi . Buning uchun 8 bit ajratilgan. Bizga ma'lumki, suzuvchi sonlarning ko'rsatkich darajasi manfiy (butun qismi 0 bo'lgan raqamlar uchun 3.3-bandga qarang) va ijobiy (butun qismi noldan farq qiladigan raqamlar uchun) bo'lishi mumkin va 2ˉ¹²⁷ dan 2¹²⁷ gacha bo'lishi mumkin . Nazariy jihatdan, biz ko'rsatkichning belgisini aniqlash uchun bir bitni ajratishimiz kerak, xuddi ishora bitida bo'lgani kabi. Ammo bu unday emas. Ko'rsatkich belgisini aniqlashda biroz vaqt sarflamaslik uchun float raqamlari +127 (0111 1111) yarim baytlik ko'rsatkichga ofset qo'shadi . Shunday qilib, 2ˉ¹²⁷ dan 2¹²⁷ gacha bo'lgan quvvatlar oralig'i o'rniga, kompyuter 0 dan +254 gacha bo'lgan quvvatlar oralig'ini saqlaydi - barcha quvvat qiymatlari ijobiy , belgiga qo'shimcha bayt sarflashning hojati yo'q. Ko'rinib turibdiki, ko'rsatkichning qiymati mumkin bo'lgan qiymatga nisbatan yarmiga siljiydi . Bu shuni anglatadiki, ko'rsatkichning haqiqiy qiymatini olish uchun xotirada saqlangan qiymatdan ushbu ofsetni ayirish kerak. Agar xotirada saqlangan ko'rsatkich qiymati ofsetdan (+127) kichik bo'lsa, unda ko'rsatkich manfiy bo'ladi: bu mantiqiy. Misol. Salbiy daraja siljishini bajaramiz -18 . Biz unga +127 ofset qo'shamiz, biz +108 daraja qiymatini olamiz (hisoblashda 0 darajasini unutmang). Keling, darajani ikkilik shaklga aylantiramiz: 1101100 Ammo daraja uchun 8 bit xotira ajratilgan va bu erda biz 7 bitli raqamni olamiz. Bo'sh, band bo'lmagan yuqori raqam (bit) o'rniga kompyuter 0 qo'shadi. Natijada, bu daraja kompyuter xotirasida 01101100 sifatida saqlanadi . Keling, ko'rib chiqaylik: +108 < +127, ya'ni daraja aslida salbiy. Quyidagi qiziqarli jadvalni ko'rib chiqing: u ikkilik va o'nlik tizimlarda suzuvchi raqamlarning normallashtirilgan shakllarining barcha mumkin bo'lgan qiymatlarini ko'rsatadi. Ko'rib turganimizdek, ikkilik tizimda +127 butun baytning to'liq yarmi (8 bit). 3) Qolgan 23 bit mantis uchun ajratilgan HALI O'QIMAN :))) Kompyuter xotirasidagi haqiqiy raqamlar.  ISHLAB CHIQISHDA!!!  - o'n bir. Ammo normallashtirilgan ikkilik mantissa uchun eng muhim bit (normallashtirilgan mantisaning butun qismi) har doim 1 ga teng bo'ladi ( yashirin bir deb ataladi ), chunki mantisaning soni 1<=M<2 (va) oralig'ida joylashgan. Shuningdek, ma'ruzaning 2.1.1-bandini eslang). Istisno faqat 0 raqamidir. Ajratilgan 23 bitga birlik yozish va xotirani isrof qilishning ma'nosi yo'q, shuning uchun mantisning qolgan qismi (uning kasr qismi) ajratilgan 23 bitga yoziladi. Ma'lum bo'lishicha, suzuvchi raqamning asosiy qismi uzunligi 24 ga teng bo'lib, ulardan bittasi kamroq bit saqlanadi. Muhim nuance. Esda tutingki, o'nlik kasr sonlarini ikkilik sonlarga o'tkazishda ikkilik tizimdagi kasr qismi ko'pincha juda katta bo'lib chiqdi. Va bizda float raqamini saqlash uchun faqat 32 bit bor. Bunday holda, ikkilik kasrning eng kichik, eng muhim raqamlari (ushbu ma'ruzaning 2.1.2-bandini eslang) ajratilgan xotiraga kiritilmaydi va kompyuter ularni e'tiborsiz qoldiradi . Raqamning aniqligi yo'qoladi , lekin ko'ryapsizmi, bu minimal. Boshqacha qilib aytganda, kasrli suzuvchilarning aniqligi 6-7 kasrdan iborat . 4.4 Ikkilik sonning eksponensial normalangan ikkilik shaklini kompyuter xotirasida saqlash. Double tipidagi haqiqiy sonlar, ba'zi xarakteristikalar bundan mustasno, float raqamlari kabi kompyuter xotirasida saqlanadi . Ikki raqamli kompyuter xotirasida 64 bit mavjud. Ular quyidagicha taqsimlanadi (shuningdek, chapdan o'ngga tartibda): 1) Sign bit (4.3-bandga qarang). Ushbu bitning soni 63 bo'lishini tushunamiz . 2) Darajasi (tartibi). Qo'sh raqamlar, uni saqlash uchun 11 bit ajratilgan . Darajani o'zgartirish ham amalga oshiriladi , lekin ikkilangan raqamlar uchun u +1023 ga teng bo'ladi . 3) Mantissa (muhim qism). Ikkilamchi raqamlar uni saqlash uchun 52 bit (raqam) ajratilgan . Bundan tashqari, mantisaning aniq butun qismi ( yashirin birlik ) xotirada saqlanmaydi . Shuni ham ta'kidlash joizki, kasr juftlarining aniqligi taxminan 16 kasrdan iborat . 4.5 O'nlik sistemaning haqiqiy sonini kompyuter xotirasida ifodalashga misollar. Va bizning ma'ruzamizning yakuniy nuqtasi mavzuni tushunishni mustahkamlash uchun o'nlik sanoq tizimining kasr sonini kompyuter xotirasida saqlash shakliga o'tkazishga misol bo'ladi. Misol 1. Raqamni oling -4,25 float turi. Keling, uni ikkilik sanoq sistemasida eksponentsial normallashtirilgan shaklda taqdim qilaylik, bu ma'ruzada biz yoritgan hamma narsani eslaylik. 1) Sonning butun qismini ikkilik ko'rinishga o'tkazing : 4/2 = 2 ( 0 bo'linishning qoldig'i ) 2/2 = 1 ( 0 bo'linishining qoldig'i ) Butun qism ikkilik tizimda 100 ga teng bo'ladi . 2) Sonning kasr qismini ikkilik shaklga aylantiring . 0,25 * 2 = 0,5 ( 0 ) 0,5 * 2 = 1,0 ( 1 ) Kasr qismi ikkilik tizimda 0,01 ga teng bo'ladi . 3) Shunday qilib, -4,25₁₀ = -100,01₂ . 4) Ikkilik sanoq sistemasida -100,01₂ sonini eksponensial normallashtirilgan ko'rinishga aylantiramiz (bu darajaning asosi 2 bo'ladi). -100,01₂ = -1,0001 *2² Keling, daraja qiymatini o'nlik formatdan ikkilik formatga o'tkazamiz . 2/2= 1 (qolgan 0 ) Darajasi 10₂. Biz -4,25₁₀ sonining ikkilik eksponensial normallashtirilgan ko'rinishida -1,0001 * 2¹º ga teng bo'lishini tushunamiz, uning kompyuter xotirasida qanday ko'rinishini yozamiz . Belgi biti 1 (salbiy raqam) bo'ladi . Eksponent ofseti 2+127 = 129₁₀ = 10000001₂ ga teng bo'lib, mantisdan yashirinni olib tashlaymiz, biz 00010000000000000000000 olamiz ( biz band bo'lmagan past tartibli bitlarni to'ldiramiz ). Pastki chiziq. 1 10000001 00010000000000000000000 - kompyuter xotirasida -4.25 raqami shunday saqlanadi. 2-misol. 0,75₁₀ float raqamini kompyuter xotirasida ikkilik saqlash formatiga aylantiring . Natijada 0 01111110 100000000000000000000000 bo'lishi kerak . E'tiboringiz uchun tashakkur.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION