Amaliy mashg`ulot uchun Mundarija


Ma'lumotlarning asosiy konversiyalari


Download 0.8 Mb.
bet13/56
Sana18.09.2023
Hajmi0.8 Mb.
#1680455
1   ...   9   10   11   12   13   14   15   16   ...   56
Bog'liq
Amaliy mashgulot sanoq sistema

Ma'lumotlarning asosiy konversiyalari.
Ma'lumot turlarini ko'rib chiqishda u yoki bu turdagi qanday qiymatlarga ega bo'lishi va qancha bayt xotirani egallashi mumkinligi ko'rsatildi. Yuqorida arifmetik amallar muhokama qilindi. Endi har xil turdagi ma'lumotlarga qo'shimcha operatsiyani qo'llaymiz:
byte a = 4;
int b = a + 70;
Natija kutilganidek juda to'g'ri 74 raqami. Endi byte tipidagi ikkita ob'ektga qo'shimcha kiritishga harakat qilaylik:
byte a = 4;
byte b = a + 70; // xato
Bu erda faqat qo'shilish natijasini oladigan o'zgaruvchining turi o'zgargan - int dan byte gacha. Ammo, biz dasturni kompilyatsiya qilmoqchi bo'lsak, kompilyatsiya vaqtida xatolikka yo'l qo'yamiz. Va agar biz Visual Studio-da ishlayotgan bo'lsak, atrof-muhit, unda xato borligini ko'rsatib, qizil chiziq bilan ikkinchi chiziq ostiga chiziladi. Amaliyot davomida biz ma'lum bir turdagi saqlashi mumkin bo'lgan qiymatlar oralig'ini hisobga olishimiz kerak. Ammo bu holda biz olishni kutayotgan 74 raqami bayt turidagi qiymatlar oralig'iga juda mos keladi, shunga qaramay, biz xatoga yo'l qo'yamiz. Haqiqat shuki, agar operatsiya eni int ga teng yoki unga teng bo'lmagan (ya'ni byte, short, int turlari) butun sonli ma'lumotlar turlarini o'z ichiga olsa, qo'shish (va ayirish) operatsiyasi int qiymatini qaytaradi. Shuning uchun a + 70 operatsiyasining natijasi xotirada 4 bayt uzunlikdagi ob'ekt bo'ladi. Keyin biz ushbu ob'ektni b o'zgaruvchisiga berishga harakat qilamiz, u byte turiga kiradi va xotirada 1 baytni egallaydi. Va bu vaziyatdan chiqish uchun siz konvertatsiya operatsiyasini qo'llashingiz kerak:
byte a = 4;
byte b = (byte)(a + 70);
Turni konvertatsiya qilish operatsiyasi qiymat aylantirilishi kerak bo'lgan turdagi qavs ichida ko'rsatishni nazarda tutadi.
Toraygan va kengaygan o`tkazmalar.
Konversiyalar torayishi (narrowing) va (widening) kengayishi mumkin. Kengaytirilgan transformatsiyalar xotiradagi ob'ekt hajmini kengaytiradi. Masalan:
byte a = 4; // 0000100
ushort b = a; // 000000000000100
Bunday holda ushort tipidagi o'zgaruvchiga byte tipidagi qiymat beriladi. Bayt turi 1 bayt (8 bit) bo'lib, a ning ikkilik qiymati quyidagicha ifodalanishi mumkin:
00000100
ushort qiymati 2 bayt (16 bit). Va o'zgaruvchiga tayinlashda a o'zgaruvchisi qiymati 2 baytgacha kengaytiriladi.
0000000000000100
Ya'ni, kengligi 8 bit bo'lgan qiymat 16 bitgacha kengaytiriladi. Tor konversiyalar, aksincha, qiymatni kamroq kenglik turiga qisqartiradi. Maqolaning ikkinchi ro'yxatida biz konversiyani qisqartirish bilan shug'ullandik:
ushort a = 4;
byte b = (byte) a;
Bu erda 8 bit uzunlikdagi b o'zgaruvchiga 16 bit bo'lgan ushort qiymati beriladi. Ya'ni, 0000000000000100 dan biz 00000100 ni olamiz. Shunday qilib, qiymat 16 bitdan (2 bayt) 8 bitgacha (1 bayt) torayadi.

Download 0.8 Mb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   ...   56




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling