Kodirovkalar

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Sakkizlik kodirovka

Kodirovkalar haqida gap ketganda. Siz bilganingizdek, kundalik hayotda biz o‘nlik sanoq tizimini ishlatamiz: barcha raqamlarimiz 10 raqamdan iborat: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 10 ta raqam bor, shuning uchun tizim o‘nlik deb ataladi.

Lekin dasturchilar – juda ijodkor odamlar, va darhol boshqa raqamlar soni bilan kodirovkalar o‘ylab topishdi. Masalan, 64, 16, 8 va 2.

8 raqamli kodirovka eng oddiy: ular shunchaki 8 va 9 raqamlarini olib tashlashdi va sakkizlik kodirovkani (sakkizlik sanoq tizimi) olishdi.

Siz, ha-ha, sakkizlik tizimda sonli literallarni belgilash mumkin. Agar, albatta, sizga bu juda kerak bo‘lsa. Bu osonroq ko‘rinadi. Faqat son oldida 0 raqamini qo‘yish kerak.

Boshqacha aytganda, Java uchun 0 bilan boshlanadigan har qanday butun sonli literal sakkizlik sifatida qabul qilinadi.

Misollar:

Kod Izohlar
int x = 015; 
x 13 ga teng: 1*8+5
int x = 025; 
x 21 ga teng: 2*8+5
int x = 0123; 
x 83 ga teng: 1*64+2*8+3 == 1*82+2*81+3*80
int x = 078;
Kompilyatsiya xatosi: sakkizlik kodirovkada 8 raqami yo‘q.

Sizga ehtimol kodda sakkizlik raqamlarni yozishingiz kerak bo‘lmasligi mumkin, ammo siz nima ekanligini bilishingiz kerak. Axir, boshqa odamlar tomonidan yozilgan kodni o‘qishingiz kerak bo‘ladi. Va yuqorida aytilganidek, dasturchilar – juda ijodkor odamlar.

Eslatib o‘tish uchun, sonning oldiga shunchaki 0 yozish mumkin emas.



2. Ikkilik kodirovka

Ikkilik kodirovka yana ham qiziqarli. Agar sakkizlikda bizda faqat 0-7 raqamlar qolgan bo‘lsa, ikkilikda faqat 0 va 1 raqamlar qoldi. Nima uchun bunday kodirovka kerak?

Hammasi kompyuter qurilishida. Kompyuterda hamma narsa elektr bilan ishlaydi, va eng samarali narsa nima saqlash va uzatish uchun ikkita holatni ishlatish ekanligi ma'lum bo‘ldi: simda elektr yo‘q (nol) va elektr mavjud (bir).

Shunday qilib, ikkilik kodirovkaning mashhurligi shundan chiqdi.

Aslida Java-da u unchalik ko‘p ishlatilmaydi: Java yuqori darajali til deb hisoblanadi, ishlayotgan apparatdan to‘liq abstraxlangan. Darhaqiqat: ma'lumotlar qanday saqlanishi va qayta ishlanishi sizga farqi yo‘qmi?

Lekin o‘tgan asrlar davomida dasturchilar ikkilik kodirovkani (va unga asoslangan kodirovkalarni) yoqtirib qolishdi, shuning uchun Java-da raqamning ikkilik shaklini hisobga oladigan operatorlar mavjud. Hatto real sonlarning aniqligi ham ularning ikkilik kodirovkasidagi tasvirlanishiga bog‘liq.

Umuman, bu kodirovka haqida bilish yaxshiroq.

Va Java-da, sakkizlik kodirovka bilan bo'lgani kabi, ikkilik kodirovkada literallarni belgilash usuli mavjud. Ya'ni, faqat 0 va 1 belgilaridan tashkil topgan. Java-kompilyator kodda ikkilik kodirovkada sonli literal yozilganligini tushunishi uchun, barcha ikkilik literallar 0b prefiksi bilan boshlanadi (b binary so‘zidan).

Misollar:

Kod Izohlar
int x = 0b100; 
x 4 ga teng: 1*4+0*2+0
int x = 0b1111; 
x 15 ga teng: 1*8+1*4+1*2+1
int x = 0b1111000111; 
x 967 ga teng: 1*29+1*28+1*27+1*26+0*25+0*24+0*23+1*22+1*2+1;
int x = 0b12000;
Kompilyatsiya xatosi: ikkilik kodirovkada 2 raqami yo‘q.


3. O‘n oltilik kodirovka

Sakkizlik va ikkilik kodirovkalardan tashqari, literallarni o‘n oltilik tizimda ham yozish mumkin. Bu juda mashhur kodirovka.

Hammasi shundaki, ikkilik yozuv haqiqiy saqlash ko‘rinishi uchun maksimal darajada yaqin bo‘lishiga qaramay, inson uchun bunday son bilan ishlash juda qiyin: million 7 raqam o‘z ichiga olmaydi, balki 20 raqamni.

Shuning uchun dasturchilar o‘n oltilik tizimni o‘ylab topishdi. Chunki 16 - bu 24, shuning uchun har bir 16-lik raqam to‘liq 4 bitga to‘g‘ri keladi. Oddiy qilib aytganda, endi har 4 bit bitta o‘n oltilik raqam bilan ifodalanishi mumkin.

O‘n oltilik kodirovkada o‘ziga xos prefiks ham bor — 0x. Misollar:

O‘nlik raqam Ikkilik yozuv O‘n oltilik yozuv
17 0b00010001 0x11
41 0b00101001 0x29
85 0b01010101 0x55
256 0b100000000 0x100

Yaxshi, siz so‘raysiz, bilamiz, sakkizlik tizimni qanday olish mumkin: shunchaki 8 va 9 raqamlarini tashlab qo‘ydik, lekin o‘n oltilik tizim uchun kerak bo‘lgan 6 raqamni qayerdan olish mumkin? Ularni ko‘rishni xohlar edik!

Bu juda oddiy ish. O‘n oltilik tizimning yo‘q raqamlariga ingliz alifbosining 6 birinchi harfi olindi: A (10), B (11), C (12), D (13), E (14), F (15).

Misollar:

O‘n oltilik yozuv Ikkilik yozuv O‘nlik raqam
0x1 0b00000001 1
0x9 0b00001001 9
0xA 0b00001010 10
0xB 0b00001011 11
0xC 0b00001100 12
0xD 0b00001101 13
0xE 0b00001110 14
0xF 0b00001111 15
0x1F 0b00011111 31
0xAF 0b10101111 175
0xFF 0b11111111 255
0xFFF 0b111111111111 4095


4. Qanday qilib o‘n oltilik kodirovkadagi sonni o‘nlikka o‘girish

O‘n oltilikdan o‘nlik sanoq tizimiga sonni o‘girish juda oson. Aytaylik, sizda 0xAFCF soni bor. O‘nlikda bu nechiga teng?

Birinchidan, bizda pozitsion sanoq tizimi bor, va har bir sanoq raqami ma'lum qiymatni 16 marta oshiradi:

A*163 + F*162 + C*161 + F

A harfi 10 ga, C harfi 12 ga, F harfi – o‘n beshga mos keladi. Natijani olamiz:

10*163 + 15*162 + 12*161 + 15

16 ni darajaga oshiramiz va natijani olamiz:

10*4096 + 15*256 + 12*16 + 15

Hammasini qo‘shamiz va natijani olamiz:

45007

Endi siz bu son qanday saqlanishini bilasiz:

0xAFCF

Endi uni ikkilik kodirovkaga o‘giramiz. Ikkilikda bu:

0b1010111111001111

Har to‘rtta bit aniq bir o‘n oltilik kodirovka belgisiga to‘g‘ri keladi. Juda qulay. Hech qanday ko‘paytirish va darajalarga oshirishlarsiz.


Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION