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 |
---|---|
|
x 13-dür: 1*8+5 |
|
x 21-dir: 2*8+5 |
|
x 83-dür: 1*64+2*8+3 == 1*82+2*81+3*80 |
|
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 |
---|---|
|
x 4-ə bərabərdir: 1*4+0*2+0 |
|
x 15-ə bərabərdir: 1*8+1*4+1*2+1 |
|
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; |
|
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.
GO TO FULL VERSION