CodeGym /Kurslar /Java SELF AZ /Kodlaşmalar

Kodlaşmalar

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Səkkizlik kodlama

Kodlamalardan danışmışkən. Bildiyiniz kimi, gündəlik həyatda biz onluq say sistemindən istifadə edirik: bütün saylarımız 10 rəqəmdən ibarətdir: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Rəqəmlər 10-dur, ona görə də bu sistemə onluq deyilir.

Amma proqramçılar — kreativ insanlardır və dərhal başqa kodlamalar yaratdılar. Məsələn, 64, 16, 8 və 2.

8 rəqəmli kodlamanı başa düşmək daha asandır: sadəcə 8 və 9 rəqəmlərini görməməzlikdən gəldilər və səkkizlik kodlama (səkkizlik say sistemi) yaratdılar.

Və siz də, hə-hə, səkkizlik sistemdə rəqəmli literallar təyin edə bilərsiniz. Əlbəttə, əgər buna ehtiyacınız varsa. Bu göründüyündən daha asandır. Rəqəmin əvvəlinə sadəcə 0 yazmaq lazımdır.

Başqa sözlə, Java-da 0 ilə başlayan hər hansı tam rəqəm literalı səkkizlik sayı kimi qəbul olunur.

Nümunələr:

Kod Şərhlər
int x = 015; 
x 13-dür: 1*8+5
int x = 025; 
x 21-dir: 2*8+5
int x = 0123; 
x 83-dür: 1*64+2*8+3 == 1*82+2*81+3*80
int x = 078;
Kompilyasiya olunmur: səkkizlik kodlamada 8 rəqəmi yoxdur.

Yəqin ki, sizə kodda səkkizlik saylar yazmaq lazım olmayacaq, amma bunun nə olduğunu bilməlisiniz. Çünki başqalarının yazdığı kodu oxumaq lazım olacaq. Və yuxarıda deyildiyi kimi, proqramçılar — kreativ insanlardır.

Və yadda saxlayın ki, sadəcə 0-ı rəqəm önündə yazmaq olmaz.



2. İkilik kodlaşdırma

İkilik kodlaşdırma daha da maraqlıdır. Əgər səkkizlikdə bizdə yalnız 0-7 rəqəmləri qalırdısa, ikilikdə yalnız 0 və 1 rəqəmləri qalır. Bəs belə bir kodlaşdırma nə üçün lazımdır?

Bütün məsələ kompüterin quruluşundadır. Kompüterdə hər şey elektriklə işləyir və məlum olub ki, orada nəyisə saxlamaq və ötürmək üçün ən effektiv üsul iki vəziyyətdən istifadə etməkdir: naqildə cərəyan yoxdur (sıfır) və cərəyan var (bir).

Ümumiyyətlə, ikilik kodlaşdırmanın populyarlığı buradan gəlir.

Əslində Java-da bu elə də tez-tez istifadə olunmur: Java yüksək səviyyəli bir dil hesab olunur, tamamilə işləndiyi dəmir-dümürdən abstraksiyalaşdırılıb. Doğrudan da: məlumatlar kompüterin daxilində hansı formada saxlanılır və işlənir, bu sizə maraqlıdırmı?

Ancaq keçən onilliklər ərzində proqramlaşdırıcılar ikilik kodlaşdırmanı (və ona əsaslanan kodlaşdırmaları) sevdiyi üçün, Java-da ikilik formada olan rəqəmləri nəzərə alan operatorlar var. Həmçinin, həqiqi ədədlərin dəqiqliyi onların ikilik kodlaşdırmada təqdimatından asılıdır.

Ümumiyyətlə, bu kodlaşdırma haqqında bilmək bilməməkdən daha yaxşıdır.

Və Java-da, səkkizlik kodlaşdırma kimi, ikilik kodlaşdırmada literal daxil etmək üsulu var. Yəni yalnız 0 və 1 simvollarından ibarət olan. Java-kompilyatoru kodda ədədi literal ikilik kodlaşdırmada yazıldığını, sadəcə sıfırlarla dolu decimal rəqəm olmadığını başa düşsün deyə, bütün ikilik literallar öncədən 0b (b binary sözündən) prefiksi ilə yazılır.

Nümunələr:

Kod Qeyd
int x = 0b100; 
x 4-ə bərabərdir: 1*4+0*2+0
int x = 0b1111; 
x 15-ə bərabərdir: 1*8+1*4+1*2+1
int x = 0b1111000111; 
x 967-yə bərabərdir: 1*29+1*28+1*27+1*26+0*25+0*24+0*23+1*22+1*2+1;
int x = 0b12000;
Kompilyasiya olunmayacaq: ikilik kodlaşdırmada rəqəm 2 yoxdur.


3. Onaltılıq kodlaşdırma

Səkkizlik və ikilik kodlaşdırmalardan əlavə, literalları onaltılıq sistemdə də yazmaq olar. Bu çox məşhur bir kodlaşdırmadır.

Məsələ burasındadır ki, ikilik yazılış baxmayaraq ki, rəqəmlərin yaddaşda saxlanılmasının real görünüşünə ən yaxın olanıdır, lakin insan üçün belə rəqəmlərlə işləmək çox çətindir: milyon 7 rəqəm deyil, 20 rəqəmdən ibarət olacaq.

Ona görə də proqramçılar onaltılıq bir sistem icad ediblər. Axı 16 — bu 24-dür, ona görə də hər bir onaltılıq rəqəm dəqiq 4 bitə uyğun gəlir. Sadəcə olaraq desək, hər 4 biti bir onaltılıq rəqəmlə yazmaq olar.

Onaltılıq kodlaşdırmanın da öz xüsusi prefiksi var — 0x. Misallar:

Onluq rəqəm İkilik yazılış Onaltılıq yazılış
17 0b00010001 0x11
41 0b00101001 0x29
85 0b01010101 0x55
256 0b100000000 0x100

Yaxşı, siz soruşacaqsınız, səkkizlik sistemi necə əldə etmək olur: sadəcə 8 və 9 rəqəmlərini çıxartdıq, bəs onaltılıq sistem üçün çatışmayan 6 rəqəmi haradan götürək? Görmək istərdik!

Burada hər şey çox sadədir. Çatışmayan 6 rəqəm kimi ingilis əlifbasının ilk 6 hərfi götürülüb: A (10), B (11), C (12), D (13), E (14), F (15).

Misallar:

Onaltılıq yazılış İkilik yazılış Onluq rəqəm
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. Şəxsləndirmə kodlamasından necə çevirmək olar

Şəxsləndirmə kodlamasından onluq sistemə çevirmək çox asandır. Tutaq ki, sizdə 0xAFCF rəqəmi var. Bu onluq sistemdə neçə edər?

Əvvəlcə, bizdə mövqe sistemidir, bu o deməkdir ki, hər bir rəqəm 16 dəfəyə qədər rəqəm dəyərini artırır:

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

A simvoluna 10 rəqəmi uyğun gəlir, C simvoluna 12 rəqəmi uyğun gəlir, F simvoluna — on beş uyğun gəlir. Alırıq:

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

16-nı qüvvətə yüksəldirik və alırıq:

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

Hamısını toplasınız və alırsınız:

45007

Artıq bilirsiniz, bu rəqəm yaddaşda necə saxlanılır:

0xAFCF

İndi isə onu ikili kodlamaya çevirəcəyik. İkili halda bu belə görünəcək:

0b1010111111001111

Hər dörd bitə tam olaraq şəxsləndirmə kodlamasının bir simvolu uyğun gəlir. Çox rahatdır. Heç bir çoxaltma və ya qüvvətə yüksəltmə olmadan.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION