4.1.1.Uzun sonlarni taqdim qilish
Ko‘p razryadlarga ega bo‘lgan sonlar bilan ishlash uchun massivlarni ishlatish
mantiqiydir. Oddiy holda baytlar massivining har bir elementi sonning bitta o‘nlik raqamiga ega
bo‘lishi mumkin, biroq bu hotira bo‘yiga tejamkor emas; Bayt 256 qiymatga ega bo‘lishi
mumkin va ulardan o‘ntasigina “ongli” hisoblanadi. Yana bir chegara baytlar massivni 256 asosli
hisoblash tizimida son singari qaralishi; baytning hohlagan qiymati 256 lik raqamning “ongli”
qiymati hisoblanadi va hotira maksimal ravishda tejamli ishlatiladi. buning ustiga qayta ishlashni
mahsus komandalar (shl, shr tipidagi bitlararo and va shu kabi) ni ishlatish hisobga
tezlashtirishga erishiladi. Biroq o‘nlik shaklda bunday sonni kiritish -chiqarish notravial massala
ekan (4.1.3- bo‘limiga). Shuning uchun 256 (yoki 65536) asosli hisoblash sistemasini, hotira
bo‘yicha keskin talablar va judayam kichik qismi kiritish- chiqarishga mansub bo‘lganida
ishlatiladi. Ko‘pincha kompromis variant ongli bo‘larkan: 0 dan 99 gacha (100 asos bo‘yicha
raqamlar) yoki word tipidagi (10000 asos bo‘yicha raqamlar) sonlarni taqdim qiluvchui byte
tipidagi elementlar massivi. Bitta o‘nlik raqamni bytega saqlash bilan taqqoslashga ko‘ra
kiritish-chiqarishni deyarli qiyinlashtirmasdan hotirani deyarli ikki marta tejashga erishiladi.
Bunda yana qandaydir arifmetik amallar- 10000 lik sistemada yozilgan sonning raqamlar
miqdori 10 lik sistemada yozilganidan 4 marta kamligi hisobiga tezlashadi. Yana raqamlar
massiviga qanday tartibda saqlanishini hal etish kerak. 1- qarashda -qog‘ozda qanday yozilsa
shunday saqlash kerak. Biroq massivning 1-elemntida kichik raqam (birliklar miqdori) 2-sida esa
kattalik S bo‘yicha eng kattasidan kichigi (hisoblash sistemasining "o‘nliklar miqdori") va shu
kabi saqlanadigan tartib afzal. Bunday tartibda bir xil razryadli raqamlar bir xil indeksli
elementlarda joylashadi. Bundan tashqari agar arifmetik amaldan keyin razryadlar miqdori
o‘zgarsa (masalan, 98+5=103), u holda aqat katta razryadlar ichidagilar o‘zgaradi va raqamlarni
siljitishga to‘g‘ri kelmaydi. Massiv haqida aytsak uning elementlarining miqdorini aniqlash
kerak. Boshqalarga odatda uzun son raqamlarining maksimum miqdori yo masalaning berilishida
yoki uni baholash qiyinmasligini aytamiz. Shuning uchun MAXNI kanstantasini e’lon qilamiz va
uzun sonni 1 - MAXN o‘lchamli massivga saqlaymiz. Biroq bu barcha band bo‘lmagan
elementlarni 0 lar bilan to‘ldirish va keyinchalik band bo‘lmaganlarni band bo‘lganlardan farq
qilmasdan barcha MAXN raqamlar ustida arifmetik amallarni bajarish kerakligini bildirmaydi.
Ko‘pincha faqat zarur razryadlar ustida amallar bajarib dastur ishlashini vaqt bo‘yicha sezilarli
yutush mumkin (masalan, agar sonlar taqqoslaganda ularning bittasida belgilar ko‘p bo‘lsa u
holda u katta bo‘ladi- bunda raqamlarga qaramasa ham bo‘ladi). Shuning uchu uzun butun sonni
nafaqat massiv orqali, balki ikki maydon bilan taqdim qilish maqsadga muvofiq: Massiv va
butun sonli ozgaruvchi - massivning real band bo‘lgan miqdori bilan istalgan qo‘shimcha
axborot u narsalarning real holatini to‘g‘ri aks ettiradigan holdaginma foydali: jumladan son
ustida har bir amal bajarilganida modefikatsiyalanadi. Shunday qilib, uzun butun belgisiz
sonlarni taqdim qilsih uchun quyidagicha strukturani ishlatamiz:
Do'stlaringiz bilan baham: |