IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal4/40-dars11 daqiqa
Mundarija (27)

O'n oltilik (hex) va sakkizlik sanoq sistemalari: ranglar va chmod ortidagi raqamlar

Qisqacha: O'n oltilik (hex) sistema uzun ikkilik sonni qisqa yozish usuli: har 4 bit bitta hex belgiga aylanadi, masalan 11111111 → FF. Sakkizlik (octal) sistemada esa har 3 bit bitta raqam bo'ladi. Hex'ni rang kodlarida (#ff8800), sakkizlikni fayl ruxsatlarida (chmod 755) uchratasiz.

Bu darsda

  • Nega dasturchilarga ikkilikdan tashqari 16 lik va 8 lik sistemalar kerakligini tushunasiz.
  • Hex'dagi A–F harflari qaysi sonlar ekanini bilasiz.
  • Ikkilik, o'nlik, hex va sakkizlik orasida o'tkaza olasiz.
  • #ff8800 rang kodi va chmod 755 yozuvini "o'qiy" olasiz.
  • Javobingizni kalkulyatorda tekshirishni o'rganasiz.

Oldin bilishingiz kerak: Nega 0 va 1: ikkilik sanoq sistemasi — ayniqsa xona qiymatlari va 2 ga bo'lish usuli.

1. Nega bu kerak?

Ikkilik sanoq sistemasi darsida kompyuter hamma narsani 0 va 1 bilan yozishini ko'rdik. Lekin odam uchun mana bunday qatorni o'qish noqulay:

text
1101111010101101

Ko'z charchaydi, bitta raqamni tushirib qoldirish oson. Buni do'stingizga telefonda aytib berishni tasavvur qiling!

Unda nega o'nlik sistemaga o'tkazmaymiz? Chunki o'nlik son bitlar bilan "chiroyli" bog'lanmaydi. O'nlikdagi raqamga qarab, qaysi bitlar 1 ekanini darhol ayta olmaysiz — har safar to'liq hisoblash kerak.

Dasturchilar boshqa yo'l topgan. 16 va 8 — 2 ning darajalari (16 = 2⁴, 8 = 2³). Shuning uchun:

  • har 4 bit aniq bitta o'n oltilik raqamga teng;
  • har 3 bit aniq bitta sakkizlik raqamga teng.

Yuqoridagi 16 bitlik qator hex'da atigi 4 belgi bo'ladi: DEAD. Qanday qilib — hozir ko'ramiz.

2. O'n oltilik sistema (hexadecimal)

2.1 16 ta raqam qayerdan olinadi?

O'n oltilik sanoq sistemasi (hexadecimal, qisqasi hex) — 16 ta raqamdan foydalanadigan sanoq usuli. Bizda esa bor-yo'g'i 10 ta raqam bor (0–9). Yetmagan 6 tasining o'rniga lotin harflari olinadi:

O'nlik Ikkilik (4 bit) Hex
0–9 0000–1001 0–9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Harflarni eslab qolish uchun: A dan boshlab sanang. A = 10, B = 11, ... F = 15. Katta yoki kichik harf farqi yo'q: FF va ff — bitta son.

2.2 Ikkilikdan hex'ga: 4 tadan guruhlash

Bu eng ko'p ishlatiladigan o'tkazish. Qoida:

  1. Ikkilik sonni o'ngdan boshlab 4 tadan guruhlarga bo'ling.
  2. Chapdagi guruh 4 tadan kam bo'lsa, oldiga 0 qo'shing.
  3. Har guruhni jadvaldan hex belgiga almashtiring.

Birinchi misol — darsning boshidagi qator:

text
Ikkilik:  1101  1110  1010  1101
Hex:        D     E     A     D

Natija: DEAD. 16 ta raqam o'rniga 4 ta belgi!

Ikkinchi misol — 101101 (6 bit):

text
Guruhlaymiz:  10  1101
To'ldiramiz:  0010  1101
Hex:            2     D

Natija: 2D.

Teskari yo'l ham shunday: har bir hex belgini 4 bitga yoyasiz. 3A → 0011 1010.

Bundan muhim xulosa: 1 bayt (8 bit) har doim aniq 2 ta hex belgi bilan yoziladi. 00 dan FF gacha.

2.3 Hex'dan o'nlikka: xona qiymatlari

Ikkilikda xona qiymatlari 1, 2, 4, 8 edi. Hex'da har bir xona o'ngdagisidan 16 barobar katta:

text
Xona qiymati:  4096   256   16    1
Daraja:          16³   16²  16¹  16⁰

Usul ikkilikdagidek: har belgini o'z xonasiga ko'paytirib, qo'shamiz.

  • 2F = 2 × 16 + 15 × 1 = 32 + 15 = 47
  • FF = 15 × 16 + 15 × 1 = 240 + 15 = 255
  • 10 = 1 × 16 + 0 × 1 = 16 (o'n emas!)

2.4 O'nlikdan hex'ga: 16 ga bo'lish

Ikkilikdagi "2 ga bo'lish" usulini eslang. Bu yerda 2 o'rniga 16 ga bo'lamiz. Masalan, 200:

Bo'lish Butun qismi Qoldiq Hex
200 ÷ 16 12 8 8
12 ÷ 16 0 12 C

Qoldiqlarni pastdan tepaga o'qiymiz: C8. Tekshiramiz: 12 × 16 + 8 = 200. To'g'ri!

2.5 0x belgisi

10 — bu o'n mi, o'n olti mi? Adashmaslik uchun dasturlashda hex son oldiga 0x qo'yiladi: 0x10 = 16, 0xFF = 255. 0x ni ko'rsangiz — "bu hex son" deb o'qing.

Tekshirib ko'ring: 0x1F o'nlikda nechaga teng? Ikkilikdagi 1100 1010 hex'da qanday yoziladi?

Javob

0x1F = 1 × 16 + 15 = 31 (F = 15). 1100 = C, 1010 = A, demak 1100 1010 = CA. Har 4 bitlik guruh — bitta hex belgi.

3. Sakkizlik sistema (octal)

Sakkizlik sanoq sistemasi (octal) — faqat 8 ta raqam ishlatiladigan sistema: 0, 1, 2, 3, 4, 5, 6, 7. Unda 8 va 9 raqamlari umuman yo'q.

Har bir sakkizlik raqam aniq 3 bitga teng (8 = 2³):

Sakkizlik Ikkilik (3 bit)
0 000
4 100
5 101
6 110
7 111

Hex bilan bir xil g'oya, faqat guruh 4 emas, 3 bitdan:

text
Ikkilik:    111  101  101
Sakkizlik:   7    5    5

Xona qiymatlari esa 1, 8, 64... bo'ladi. Masalan, 755 = 7 × 64 + 5 × 8 + 5 × 1 = 448 + 40 + 5 = 493.

Dasturlash tillarida sakkizlik son oldiga 0o yoziladi: 0o755. Linux'dagi chmod buyrug'ida esa belgisiz yoziladi: chmod 755.

Tekshirib ko'ring: Nega sakkizlikda 8 raqami yo'q? 110 100 ikkilik soni sakkizlikda qanday yoziladi?

Javob

Sakkizlikda 8 ta raqam bor: 0 dan 7 gacha. Ya'ni 7 dan keyin xona to'ladi va 10 yoziladi — xuddi o'nlikda 9 dan keyin 10 kelgani kabi. Endi misol: 110 = 6, 100 = 4, demak 64 (sakkizlikdagi oltmish to'rt emas, "olti-to'rt").

4. Bu sistemalarni qayerda uchratamiz?

4.1 Veb-ranglar: #ff8800

Ekrandagi har bir rang uchta "chiroq"ning aralashmasidan chiqadi: qizil (red), yashil (green) va ko'k (blue). Qisqasi — RGB. Har bir chiroqning kuchi 1 bayt, ya'ni 0 dan 255 gacha.

1 bayt = 2 ta hex belgi. Demak, butun rang 6 ta hex belgi bilan yoziladi:

css
/* #RRGGBB: qizil, yashil, ko'k */
color: #ff8800;

Bu yerda:

  • ff — qizil: 15 × 16 + 15 = 255, ya'ni to'liq.
  • 88 — yashil: 8 × 16 + 8 = 136, ya'ni o'rtacha.
  • 00 — ko'k: 0, umuman yo'q.

To'liq qizil va yarimta yashil aralashsa — to'q sariq (apelsin rang) chiqadi. #000000 — qora (hamma chiroq o'chiq), #ffffff — oq (hammasi to'liq yoniq).

Qisqa yozuv ham bor: #f80 — bu #ff8800 ning o'zi, har belgi ikki marta takrorlanadi. Ranglarni CSS ranglari darsida to'liq o'rganamiz.

4.2 Fayl ruxsatlari: chmod 755

Linux va serverlarda har bir fayl uchun uch xil ruxsat bor:

Ruxsat Belgi Qiymati Ikkilikda
O'qish (read) r 4 100
Yozish (write) w 2 010
Bajarish (execute) x 1 001

Ruxsatlarni qo'shib, bitta raqam hosil qilinadi: 4 + 2 + 1 = 7 — hammasi mumkin. 4 + 1 = 5 — o'qish va bajarish. Bitta sakkizlik raqam (3 bit) uchala ruxsatni to'liq ifodalaydi.

chmod — Linux'da ruxsat beradigan buyruq. chmod 755 dagi uch raqam uch xil odam uchun:

  • 7 (rwx) — fayl egasi: hammasi mumkin.
  • 5 (r-x) — egasining guruhidagilar: o'qish va bajarish.
  • 5 (r-x) — qolgan hamma: o'qish va bajarish.

Egasi, guruh va buyruqlarni hozir yodlash shart emas. Ularni fayl ruxsatlari darsida terminalda amalda qilamiz.

4.3 Boshqa joylar

Hex dasturchi hayotida juda ko'p uchraydi. Hozircha faqat tanib qo'ying:

  • Xato kodlari. Windows xatolarida 0x80070005 kabi kodlarni ko'rgandirsiz. Bu hex son.
  • Xotira manzillari. Dastur buzilganda 0x7ffd5c3a1b20 kabi yozuv chiqishi mumkin — bu RAM'dagi joyning manzili.
  • Qurilma manzili. Wi-Fi sozlamalaridagi 3C:22:FB:0A:1D:7E kabi MAC-manzil — 6 bayt, har biri 2 hex belgi.
  • Emoji va harflar kodi. Kulib turgan yuz emojisining kodi U+1F600 — bu ham hex. Uni matn kodlash darsida ko'ramiz.

5. Javobni qanday tekshirish mumkin?

5.1 Kalkulyator bilan

Windows'dagi Calculator ilovasini oching va menyudan Programmer rejimini tanlang. U yerda to'rt qator bor: HEX (o'n oltilik), DEC (o'nlik), OCT (sakkizlik), BIN (ikkilik). Bitta qatorga son kiritsangiz, qolganlarida uning boshqa ko'rinishlari chiqadi.

macOS'dagi Calculator'da ham Cmd + 3 bilan shunday rejim ochiladi.

5.2 JavaScript bilan (oldindan bir qarash)

JavaScript'ni hali o'rganmadik. Quyidagi kodni tushunishingiz shart emas — faqat har qator oxiridagi izohga (natijaga) qarang. Saytda "Ishga tushir" tugmasini bossangiz, natijani o'zingiz ko'rasiz.

js
// Bitta son — to'rt xil yozuv
console.log(0b11111111); // 255
console.log(0o377); // 255
console.log(0xff); // 255

// O'nlik sonni boshqa sistemaga o'tkazish
console.log((245).toString(2)); // 11110101
console.log((245).toString(8)); // 365
console.log((245).toString(16)); // f5

// Hex matnni o'nlikka o'tkazish
console.log(parseInt("f5", 16)); // 245

0b, 0o, 0x — bu darsda ko'rgan belgilarning o'zi. Ular bilan yozilgan son xotirada baribir bir xil bitlar bo'lib turadi.

6. Ko'p uchraydigan xatolar

6.1 Harflarni noto'g'ri qiymatlash

Ba'zilar A ni 1 deb o'ylaydi, chunki u alifboning birinchi harfi. Aslida A = 10, chunki 0–9 raqamlari band. Qolganlari: B = 11, C = 12, D = 13, E = 14, F = 15.

6.2 Chapdan guruhlash

101101 ni chapdan guruhlasangiz: 1011 01 → B va 1 → B1. Bu xato! To'g'risi o'ngdan: 10 1101 → 0010 1101 → 2D. Har doim o'ngdan 4 tadan (sakkizlikda 3 tadan) ajrating.

6.3 Hex'dagi 10 ni o'n deb o'qish

0x10 — o'n emas, o'n olti. 0x belgisini ko'rsangiz, xona qiymatlari 1, 16, 256 ekanini eslang.

6.4 Sakkizlikda 8 yoki 9 ni ishlatish

Sakkizlikda faqat 0–7 bor. JavaScript'da 0o789 deb yozsangiz, dastur umuman ishga tushmaydi:

js
const xatoSon = 0o789;
text
SyntaxError: Invalid or unexpected token

Tarjimasi: "Noto'g'ri yoki kutilmagan belgi". JavaScript 0o7 ni tushundi, lekin 8 ni sakkizlik son ichida kutmagan edi.

7. Mashqlar

1-mashq (oson): Ikkilikdan hex'ga

1111 0001 sonining hex ko'rinishini toping.

Javob: 0x

Yechim

Bitlar allaqachon 4 tadan ajratilgan:

  1. 1111 = 15 = F.
  2. 0001 = 1 = 1.

Natija: 0xF1. O'nlikda tekshirsak: 15 × 16 + 1 = 241.

2-mashq (o'rta): Ranglarni o'qish

  1. #00ff00 qanday rang? Javob:
  2. #808080 rangida qizil, yashil va ko'k qiymatlari o'nlikda nechaga teng? Bu qanday rang bo'lishi mumkin?
Yechim
  1. Qizil 00 = 0, yashil ff = 255, ko'k 00 = 0. Faqat yashil to'liq yoniq — toza yashil rang.
  2. Uchala qiymat ham 80 = 8 × 16 + 0 = 128, ya'ni o'rtacha. Uch rang teng miqdorda aralashsa, kulrang chiqadi. 0 da qora, 255 da oq, 128 da — o'rtacha kulrang.

3-mashq (qiyin): Ruxsat va o'tkazish

  1. Fayl egasi faylni o'qiy va yoza olsin. Guruh va qolganlar faqat o'qisin. chmod uchun qanday raqam kerak?
  2. Shu raqamni rwx ko'rinishida yozing.
  3. O'nlikdagi 200 ni hex'ga o'tkazing.
Yechim
  1. Egasi: o'qish (4) + yozish (2) = 6. Guruh: 4. Qolganlar: 4. Javob: 644. Bu oddiy fayllar uchun eng ko'p uchraydigan ruxsat.
  2. 6 = 110 = rw-, 4 = 100 = r--. Demak: rw-r--r--. Ikkilik bitlar va rwx harflari bir-biriga mos kelishiga e'tibor bering: 1 — ruxsat bor, 0 — yo'q (-).
  3. 200 ÷ 16 = 12, qoldiq 8. 12 ÷ 16 = 0, qoldiq 12 (C). Pastdan tepaga: C8. Tekshirish: 12 × 16 + 8 = 200.

8. Real ishda

  • Frontend: dizayner sizga rangni #1E90FF ko'rinishida beradi. Siz uni CSS'ga ko'chirasiz va kerak bo'lsa, qizil-yashil-ko'k qismlarini o'zgartirasiz.
  • Server: saytni serverga joylashtirganda fayl ruxsatlarini chmod 644 va chmod 755 bilan sozlaysiz. Noto'g'ri ruxsat — xavfsizlik teshigi yoki "Permission denied" xatosi.
  • Xatoni topish (debug): xato xabarlaridagi 0x... kodlarini Google'ga aynan shunday yozib qidirasiz.
  • Intervyu: "#ff0000 qanday rang?" yoki "chmod 777 nega xavfli?" kabi savollar uchraydi. Ikkinchisining javobi: 7 = rwx, ya'ni hamma faylni o'zgartira oladi.

Xulosa

  • Hex (16 lik) — har 4 bitni 1 belgiga jamlaydi. Raqamlar: 0–9 va A–F (A = 10, F = 15). Belgisi: 0x.
  • Sakkizlik (8 lik) — har 3 bitni 1 raqamga jamlaydi. Raqamlar: 0–7. Belgisi: 0o.
  • Ikkilikdan hex'ga — o'ngdan 4 tadan guruhlab, jadvaldan almashtiriladi.
  • Hex'dan o'nlikka — xona qiymatlari 1, 16, 256 bilan; o'nlikdan hex'ga — 16 ga bo'lib.
  • 1 bayt = 2 hex belgi, shuning uchun rang #RRGGBB ko'rinishida yoziladi.
  • chmod 755 — egasi, guruh va qolganlar uchun uchta sakkizlik raqam: r = 4, w = 2, x = 1.

Keyingi dars: CPU: kompyuterning miyasi — protsessor bu bitlar ustida qanday qilib soniyasiga milliardlab amal bajarishini ko'ramiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
O'n oltilik (hex) va sakkizlik sanoq sistemalari: ranglar va chmod ortidagi raqamlar — IlmHamroh